Judge
Programmers - 멀리 뛰기
깡구_
2022. 7. 14. 10:10
title: Programmers - 멀리 뛰기
date: 2022-07-14
tags:
- Algorithm
- DP
https://school.programmers.co.kr/learn/courses/30/lessons/12914
문제 요약
1칸, 혹은 2칸씩 뛸 수 있을 때, n번째 칸에 도달하는 방법 % 1234567을 return한다.
문제 풀이
전형적인 DP 문제이다. 이전에 풀었던 2 x n 타일링과 매우 유사한 문제이다.
한 번에 1칸이나 2칸을 뛸 수 있다. 그렇다면 n >= 3 일 경우, n-2에서 2칸 + n-1에서 1칸이 n번째에 도달하는 경우의 수이다.
이것을 프로그램으로 작성한 것이 끝이다.
프로그램
int solution ( int n )
{
int irgDP [ 3 ] = { 0 , 1 , 1 } ;
for ( int i = 1 ; i < n ; ++i )
{
irgDP [ 0 ] = irgDP [ 1 ] ;
irgDP [ 1 ] = irgDP [ 2 ] ;
irgDP [ 2 ] = ( irgDP [ 0 ] + irgDP [ 1 ] ) % 1234567 ;
}
return irgDP [ 2 ] ;
}