-
[Javascript][Python] 프로그래머스 LV2 멀리 뛰기Algorithm/Problem Solving 2022. 10. 28. 10:46
https://school.programmers.co.kr/learn/courses/30/lessons/12914
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 파악
- 한 번에 1칸 또는 2칸 이동 가능하다.
- n칸까지 이동할 수 있는 방법의 개수를 return
- 문제 해결 흐름
- 전형적인 dynamic programming의 bottom-up 방식 유형의 풀이로 해결가능한 문제다.
문제에서 제시한 조건 중 1칸과 2칸 이동으로 제한이 되어 있기 때문에
4번 째 칸까지 이동하기 위해서 올 수 있는 방법은
- 3번째 칸에서 한 칸 이동하여 4번 째 칸에 도착
- 2번째 칸에서 두 칸 이동하여 4번 째 칸에 도착
즉,
2번 째 칸까지 이동하는 방법의 개수(2) + 3번 째 칸까지 이동하는 방법의 개수(3)이다.
dp 유형은 점화식을 구하는 것이 문제 해결의 핵심인데
f(n) = f(n-2) + f(n-1) // (단, n > 1)
피보나치 수의 점화식과 동일하다.
Python
def solution(n): dp_array = [0 for _ in range(n+1)] dp_array[1] = 1 if(n == 1): return 1 dp_array[2] = 2 for i in range(3, n+1): dp_array[i] = dp_array[i-1] + dp_array[i-2] return dp_array[n] % 1234567
Javascript
const solution = (n) => { const dp_array = [0, 1, 2] for(let i=3; i<=n; i++){ dp_array[i] = (dp_array[i-2] + dp_array[i-1]) % 1234567 } return dp_array[n] }
비슷한 유형의 문제
https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
'Algorithm > Problem Solving' 카테고리의 다른 글
[Javascript] 백준 1987 알파벳 (0) 2023.03.09 [Javascript] 프로그래머스 LV2 귤 고르기 (0) 2022.11.24 [Javascript][Python] 프로그래머스 LV2 큰 수 만들기 (0) 2022.11.15 [Python] 프로그래머스LV2 타겟 넘버 (0) 2022.11.01 [Python] 2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼 (0) 2022.10.28