다이나믹 프로그래밍

2022. 7. 2. 03:05·알고리즘 풀이

https://www.acmicpc.net/problem/2839

 

일단 dy라는 다이나믹 배열을 만들겠습니다.

그리고 그 안에 1부터 5까지는 미리 세팅해 두겠습니다.

그리고 6부터 시작해서 처음에는 왼쪽 다섯칸 가서 dy[1]이 0보다 크다면 d[6] = dy[1] + 1을 해줍니다.

만약 dy[1]이 -1이라면 두번째로 dy[6]에서 왼쪽으로 세칸을 가서 dy[3]이 0보다 크다면 dy[6] = dy[3] + 1을 해줍니다.

만약 dy[3]도 -1이라면 dy[6] = -1을 해줍니다.

이렇게 예제에 입력된 대로 18까지 이 로직을 반복해주면 아래의 dy배열처럼 각 자릿값에 숫자가 들어갈 것입니다.

마지막으로 dy[18]을 출력해주면 됩니다.

 

 

소스코드로 재현해 보겠습니다.

 

var fs = require('fs'); 
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
const n = Number(input[0])

function solution(n) {
  let answer = 0;
  let dy = Array.from({length: n+1}, () => 0);
  dy[1] = -1;
  dy[2] = -1;
  dy[3] = 1;
  dy[4] = -1;
  dy[5] = 1;
  for (let i = 6; i <=n; i++) {
    if(dy[i-5] > 0) dy[i] = dy[i-5] + 1
    else if(dy[i-3] > 0) dy[i] = dy[i - 3] + 1;
    else dy[i] = -1
  }
  answer = dy[n]
  return answer
}

console.log(solution(n))

'알고리즘 풀이' 카테고리의 다른 글

정렬  (0) 2022.08.04
그리디 알고리즘  (0) 2022.08.04
Node.js로 백준문제 테스트하기(with Replit)  (0) 2022.06.26
BFS 넓이 우선 탐색  (0) 2022.06.18
그래프 정렬  (0) 2022.06.11
'알고리즘 풀이' 카테고리의 다른 글
  • 정렬
  • 그리디 알고리즘
  • Node.js로 백준문제 테스트하기(with Replit)
  • BFS 넓이 우선 탐색
JoyYellow
JoyYellow
  • JoyYellow
    JoyYellow
    JoyYellow
  • 전체
    오늘
    어제
    • 분류 전체보기 (128)
      • Vue (7)
      • React (10)
      • 알고리즘 풀이 (29)
      • 타입스크립트 (2)
      • Microsoft (4)
      • TIL(Today I Learned) (16)
      • Devops (4)
      • CS(Computer Science) (2)
      • Spring (1)
      • Incomplete (0)
      • JS소스모듈 (10)
      • TDD (2)
      • 스프링부트 (0)
      • CSS (8)
      • Next.js (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    노개북
    노마드코더
    개발자북클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
JoyYellow
다이나믹 프로그래밍
상단으로

티스토리툴바