-문제: https://www.acmicpc.net/problem/1003
-정답 풀이
0을 담는 배열과, 1을 담는 배열을 따로 초기화 한 후 이들끼리 피보나치 수열을 진행하면 된다고 생각했다
f(n)=f(n-1)+f(n-2)
점화식 값을 삽입하는 형태로 했는데, 틀린 답이 나왔다. python tutor를 돌려보니 길이가 22일 때, len(one),len(zero)의 값이 27이 되었으며, 틀린 답을 출력했다.
length=len(zero)
if length <= n 부분을 입력하지 않아서 틀렸던 것 같은데, 아직 이유를 잘 모르겠다.
t=int(input())
zero=[1,0,1]
one=[0,1,1]
for _ in range(t):
n=int(input())
length=len(zero)
if length <= n:
for i in range(length,n+1):
zero.append(zero[i-2]+zero[i-1])
one.append(one[i-1]+one[i-2])
print(zero[n],one[n])
-틀린 풀이
t=int(input())
zero=[1,0]
one=[0,1]
for _ in range(t):
n=int(input())
for i in range(2,n+1):
zero.append(zero[i-2]+zero[i-1])
one.append(one[i-1]+one[i-2])
print(zero[n],one[n])
'백준 > DP' 카테고리의 다른 글
[dp/백준] 11726번: 2xn 타일링(2차) (0) | 2022.06.01 |
---|---|
[dp/백준] 9095번: 1,2,3 더하기(2차) (0) | 2022.06.01 |
[dp/백준] 1463번: 1로 만들기(2차) (0) | 2022.05.30 |
[dp/백준] 18353번: 병사 배치하기 (0) | 2022.05.27 |
[백준/dp] 14501번: 퇴사(2차) (0) | 2022.05.26 |