처음에는 재귀함수를 이용해서 해결하려고 했다. 하지만 시간초과가 발생한다.
for문으로 바꾸니 해결됐다.
0의 개수와 1의 개수를 각각 계속 누적시켜서 더해준다.
num = int(input())
for _ in range(num):
n = int(input())
zero = [0] * (n + 1)
one = [0] * (n + 1)
for i in range(n + 1):
if i == 0:
zero[0] = 1
elif i == 1:
one[1] = 1
else:
zero[i] = zero[i - 2] + zero[i - 1]
one[i] = one[i - 2] + one[i - 1]
print(zero[i], one[i])
아래는 재귀함수를 이용한 풀이이다.
def fibo(n):
if n == 0:
li[0] += 1
return 0
elif n == 1:
li[1] += 1
return 1
else:
return fibo(n - 1) + fibo(n - 2)
num = int(input())
for _ in range(num):
li = [0, 0]
fibo(int(input()))
print(li[0], li[1])
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 11399번 : ATM (3) | 2021.06.26 |
---|---|
[BOJ] [Python] 1697번 : 숨바꼭질 (0) | 2021.06.26 |
[BOJ] [Python] 1010번 : 다리 놓기 (0) | 2021.05.24 |
[BOJ] [Python] 1753번 : 최단경로 (0) | 2021.05.24 |
[BOJ] [Python] 14496번 : 그대, 그머가 되어 (1) | 2021.05.20 |