1. 문제
https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# n : 테스트 케이스 수
n = int(input().strip())
# pibo_l : 피보나치 배열
pibo_l = [[1,0], [0,1]]
for i in range(n):
cnt = int(input().strip())
if len(pibo_l) <= cnt:
for j in range(len(pibo_l), cnt+1):
pibo_l.append([pibo_l[j-1][0] + pibo_l[j-2][0], pibo_l[j-1][1] + pibo_l[j-2][1]])
print(pibo_l[cnt][0], pibo_l[cnt][1])
3. 후기
- 피보나치 개념은 기존에 풀어보았던 문제들에 의해 이미 알고 있어 어렵지 않았다.
다만 위 문제에서는 첫 인덱스인 0과 두번째 인덱스인 1의 호출 횟수를 세는 것인데, 다르게 말해서 테스트 케이스가 0과 1일 때 각각 [1, 0], [0, 1]을 가지고 2 이상의 테스트 케이스 부터는 0과 1일때의 호출 횟수를 각각 피보나치 개념을 적용하여 더해주면 되는 방식이기 때문에 어렵지 않게 해결할 수 있었다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 게임(1072) (1) | 2023.01.26 |
---|---|
(Python)백준 코딩테스트 연습 - 어린 왕자(1004) (0) | 2023.01.24 |
(Python)백준 코딩테스트 연습 - 터렛(1002) (0) | 2023.01.22 |
(Python)백준 코딩테스트 연습 - 좋은 단어(3986) (0) | 2023.01.21 |
(Python)백준 코딩테스트 연습 - 베스트셀러(1302) (0) | 2023.01.21 |