-코드
for _ in range(int(input())):
n = int(input())
zero = [1, 0]
one = [0, 1]
for i in range(2, n + 1):
zero.append(zero[i - 1] + zero[i - 2])
one.append(one[i - 1] + one[i - 2])
print(zero[n], one[n])
처음에는 위에 주어진 함수를 이용하려다 잘 안되어서 예전에 해결했던 피보나치 문제를 보고 거기서 0과 1을 호출한 것을 어떻게 뽑아낼까 생각하다가 찾아보니 아래 표와 같은 반복성이 있는 것을 찾게 되었습니다.
n | 0 | 1 | 2 | 3 | 4 | 5 |
0 | 1 | 0 | 1 | 1 | 2 | 3 |
1 | 0 | 1 | 1 | 2 | 3 | 5 |
0의 호출수와 1의 호출수가 피보나치 함수처럼 n [i-1] + n [i - 2]를 이루고 있는 것을 찾게 된 후에 해결을 할 수 있게 되었습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]1065번 한수 (0) | 2021.05.27 |
---|---|
[백준/파이썬]11726번 2×n 타일링 (0) | 2021.05.26 |
[백준/파이썬]1676번 팩토리얼 0의 개수 (0) | 2021.05.25 |
[백준/파이썬]11004번 K번째 수 (0) | 2021.05.25 |
[백준/파이썬]1037번 약수 (0) | 2021.05.25 |