#Algorithm
문제 번호
1003번 피보나치 수(S3)
알고리즘 + 이론
DP
정답 코드
# 1003번
# 0 <= n < 40
# 0을 호출하면 0 1회 1 0회
# 1을 호출하면 0 0회 1 1회
# 2를 호출하면 0 1회 1 1회
# 3을 호출하면 0 1회 1 2회
# 4를 호출하면 0 2회 1 3회
# F(n)의 값 [a,b]가 호출 횟수라고 했을 때
# F(n) = F(n-1) + F(n-2)
T = int(input())
n = []
for _ in range(T):
n.append(int(input()))
score = [[1,0],[0,1]]
for i in range(2,max(n)+1):
zero_cnt = score[i-1][0] + score[i-2][0]
ont_cnt = score[i-1][1] + score[i-2][1]
score.append([zero_cnt,ont_cnt])
for i in n:
print(score[i][0], score[i][1])
느낀점 & 피드백
저번에 재귀로 풀다가 틀렸는데 DP로 푸니까 맞았다.
나는 문제를 보고 DP, 그리디, 완전탐색 등 뭘로 풀지 정하는 게 감이 안 잡힌다.
어떻게 잡아야할까?
이 글이 도움이 되셨나요?