백준 문제 링크
떡 먹는 호랑이
- 첫째 날과 둘째 날의 값을 증가시키면서 확인해야한다.
- 초기값 DP[0] = 1, DP[1] = 1로 지정하고
- DP[N-1] == K이면 break
- DP[N-1] < K이면 DP[1] += 1
K보다 작다면 둘째 날의 값을 증가시켜야
[1, 2, 3, 5, 8, 13] 이런 식으로 증가한다.- DP[N-1] > K이면 DP[0] += 1, DP[1] = DP[0]
K보다 크다면 첫째 날의 값을 증가시키고, 둘째 날도 첫째 날과 똑같이 만들어 다시 확인해야한다.
[2, 2, 4, 6, 10, 16], [2, 3, 5, 8, 13, 21], [2, 4, 6, 10, 16, 26],
[2, 5, 7, 12, 19, 31], [2, 6, 8, 14, 22, 35], [2, 7, 9, 16, 25, 41]
- K와 같은 값을 찾았을 때의 첫째 날과 둘째 날의 값을 출력하면 끝!
D, K = map(int, input().split())
DP = [0] * D
DP[0], DP[1] = 1, 1
while True:
for i in range(2, D):
DP[i] = DP[i-1] + DP[i-2]
if DP[D-1] == K:
print(DP[0])
print(DP[1])
break
elif DP[D-1] < K:
DP[1] += 1
else:
DP[0] += 1
DP[1] = DP[0]