프론트엔드 개발자의 기록 공간

[DP] 계단 오르기 본문

알고리즘_JS/인프런 JS알고리즘

[DP] 계단 오르기

[리우] 2022. 4. 6. 18:13

🚩 계단 오르기

 

📖 문제 설명 : 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다.

4계단을 오른다면 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2로 총 5가지이다.

N 계단일 때 올라갈 수 있는 방법의 수는??

 

💡 피보나치 수열을 활용한다.

 

// 계단오르기 DP

function solution(n) {
  let answer = 0
  let dp = Array.from(Array(n + 1)).fill(0)
  dp[1] = 1 // 첫 번째 계단 경우의 수
  dp[2] = 2 // 두 번째 계단 경우의 수

  for (let i = 3; i <= n; i++) {
    dp[i] = dp[i - 1] + dp[i - 2]
  }
  answer = dp[n]
  return answer
}

console.log(solution(7))

👨‍💻 코드 설

세 번째 계단으로 가는 경우는 첫 번째 계단의 경우의 수 + 2 계단 오르는 경우,

두 번째 계단의 경우의 수 + 1 계단 오르는 경우로 i-2, i-1 계단의 경우의 수와 동일하다.

즉 3가지 경우이다.

 

네 번째 계단의 경우는 두 번째 계단에서 +2 계단 오르는 경우, 세 번째 계단에서

+1 계단 오르는 경우이다. 즉 2+3 = 5가지이다.

 

잘못된 설명, 코드, 예외 케이스가 있다면 댓글 남겨주시면 수정하겠습니다.

728x90

'알고리즘_JS > 인프런 JS알고리즘' 카테고리의 다른 글

[DP] 최대 부분 증가 수열  (0) 2022.04.07
[BFS, DFS] 섬나라 아일랜드  (0) 2022.04.05
[BFS] 송아지 찾기  (0) 2022.04.04
[DFS] 경로 탐색  (0) 2022.04.04
[재귀함수, 완전탐색] 조합 구하기  (0) 2022.04.03
Comments