첫 번째 풀이
import sys
def pibo(n):
if n < 3:
return 1
else:
return pibo(n-1) + pibo(n-2)
for i in sys.stdin:
if (i:=int(i)) == -1:
break
cows = pibo(i)
print(f"Hour {i}: {cows} cow(s) affected")
두 번째 풀이
import sys
cows = [1,1] + [0 for _ in range(490)]
for i in range(2, 491):
cows[i] = cows[i-1] + cows[i-2]
for i in sys.stdin:
if (i:=int(i)) == -1:
break
print(f"Hour {i}: {cows[i-1]} cow(s) affected")
CODE REVIEW
- 피보나치 수열만 구현할 수 있다면 쉽게 풀어낼 수 있는 문제였다.
- 영어로 된 문제였는데, 요약하자면
피보나치 수열로 늘어나는 감염된 소의 숫자를 구하라
이다. - 피보나치 수열을 함수로 구현했을 때
시간초과
문제가 발생하길래 미리 490 범위의 피보나치 수열을 구해두고 꺼내 쓰는 방식을 택했다.