68.계단오르기 - Dynamic Programming

Updated:


🔍 문제

철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다.

만약 총 4계단을 오른다면 그 방법의 수는

1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다.

그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?

image

🔹 입력설명

첫째 줄은 계단의 개수인 자연수 N(3≤N≤45)이 주어집니다.

🔹 출력 설명

첫 번째 줄에 올라가는 방법의 수를 출력합니다

🔹 입력예제 1

7

🔹 출력 예제 1

21


📌 풀이

image image image

function solution(n) {
  let answer = 0;
  let dy = Array.from({ length: n + 1 }, () => 0); // dynamic arr 생성 (길이는 n 까지니까 n + 1 , 모두 일단 0으로 초기화 시켜 줌)
  dy[1] = 1; // 직관적으로 알수 있는 부분은 값을 넣어 줌
  dy[2] = 2;
  for (let i = 3; i <= n; i++) {
    dy[i] = dy[i - 2] + dy[i - 1]; // 관계 식을 만들어서 사용하면 쉽게 구할 수 있음
  }
  answer = dy[n];
  return answer;
}

console.log(solution(7));

Leave a comment