1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
일반적인 피보나치 수열 문제의 간단한 변형 문제라고 생각된다.
피보나치 함수에서 0 혹은 1까지 방문하는 횟수를 세는 문제이다.
처음에는 평소와 같이 재귀를 이용하여 풀었더니 시간 초과가 발생하였다.
각 숫자 별로 0과 1의 수를 리스트 형태로 전부 저장한 뒤, 값을 꺼내왔다.
import sys
T = int(sys.stdin.readline())
for _ in range(T):
N = int(sys.stdin.readline())
dp = [[0,0] for i in range(N+1)]
if N == 0:
print("1 0")
continue
elif N == 1:
print("0 1")
continue
dp[0] = [1,0]
dp[1] = [0,1]
for j in range(N+1)[2:]:
# dp[3] = [dp[2][0]+dp[1][0], dp[2][1]+dp[1][1]]
dp[j] = [dp[j-1][k] + dp[j-2][k] for k in range(2)]
print(dp[N][0], dp[N][1])
'알고리즘' 카테고리의 다른 글
[Programmers] 로또의 최고 순위와 최저 순위 - python (0) | 2022.06.29 |
---|---|
[Programmers] 신규 아이디 추천 - python (0) | 2022.06.28 |
[BOJ] 10844 쉬운 계단 수 - python (0) | 2022.04.27 |
[BOJ] 18352 특정 거리의 도시 찾기 - python (0) | 2022.03.30 |
[BOJ] 1012 유기농 배추 - python (0) | 2022.03.27 |