티스토리 뷰

문제링크 : https://www.acmicpc.net/problem/6571

dp = [0 for i in range(1001)]
dp[1] = 1
dp[2] = 2
for i in range(3, 1001) :
    dp[i] = dp[i-1] + dp[i-2]

while(True):
    a, b = map(int,input().split())
    if a == 0 and b == 0 :
        break
    cnt = 0
    for i in range(1, 1001) :
        if a <= dp[i] and dp[i] <=b:
            cnt+=1
    print(cnt)

 

피보나치 계산에 따라 수가 매우 커지므로 python으로 푸는 것이 용이한 문제이다.

C++로 풀 경우 문자열로 바꾸어서 계산할 필요가 있다.

 

이외에는 사전에 피보나치를 dp를 통해 미리 계산해놓고 입력받은 값에 대해 범위만 체크해서 카운팅해주면 된다.

'백준 > 실버' 카테고리의 다른 글

[백준 17291번] 새끼치기 (C++)  (0) 2024.07.19
[백준 17391번] 무한부스터 (C++)  (0) 2024.07.18
[백준 14607번] 피자 (Large) (C++)  (0) 2024.07.16
[백준 17213번] 과일 서리 (C++)  (0) 2024.07.14
[백준 4097번] 수익 (C++)  (0) 2024.07.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함