BOJ - 2502

주의·2024년 1월 30일
0

boj

목록 보기
147/214

백준 문제 링크
떡 먹는 호랑이

❓접근법

  1. 첫째 날과 둘째 날의 값을 증가시키면서 확인해야한다.
  2. 초기값 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]
  1. 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]

0개의 댓글