링크: https://www.acmicpc.net/problem/1003
def fibonacci(n):
if n == 0:
return 1, 0
elif n == 1:
return 0, 1
prev_0, prev_1 = 1, 0
present_0, present_1 = 0, 1
for i in range(n - 1):
prev_0, prev_1, present_0, present_1 = present_0, present_1, present_0 + prev_0, present_1 + prev_1
return present_0, present_1
n = int(input())
for i in range(n):
input_n = int(input())
answer = fibonacci(input_n)
print(answer[0], answer[1])
- 동적계획법을 사용하는 피보나치 풀이는 워낙 많이 봐서 외운지라 어렵지 않게 풀었다. 다만 이 문제는 피보나치 수열을 직접 구현하는 것이 아니라 0과 1을 호출하는 횟수를 구하는 문제라 조금은 신선했던 것 같다.
- 나는 0을 호출하는 횟수와 1을 호출하는 횟수를 따로따로 변수로 선언해서 prev_0, prev_1, present_0, present_1로 4개의 변수를 사용했는데 좀 더 간결한 풀이가 있지 않을까 싶어 아쉬운점이 있다.
'Python > Coding Test' 카테고리의 다른 글
[Python] 프로그래머스 N으로 표현 (0) | 2022.03.10 |
---|---|
[Python] 백준 11047번 (0) | 2022.03.03 |
[Python] 백준 15649번 BFS 풀이 (0) | 2022.03.03 |
프로그래머스 코딩테스트 연습 - 정렬 풀이 (0) | 2021.12.03 |
프로그래머스 코딩테스트 연습 - 힙(heap) 풀이 (0) | 2021.12.03 |