[알고리즘/백준] 2193: 이친수(python)

유현민·2022년 4월 14일
0

알고리즘

목록 보기
121/253
post-custom-banner

길이12345
개수11235

이런 규칙을 만족한다.

dp[i] = dp[i-1] + dp[i+1]

N = int(input())
dp = [0, 1, 1] + [0] * N
for i in range(2, N + 1):
    dp[i] = dp[i-1] + dp[i-2]
print(dp[N])

2차원 리스트를 이용하는 방법도 있다.

자리수01
101
210
311
421
532

규칙을 보면 0으로 끝나면 위에 두 수를 다 더한다.

1로 끝나면 0으로 끝난 경우에만 1이 올 수 있기 때문에 이전에 0으로 끝난 수를 그대로 가져온다.

N = int(input())
dp = list([0, 0] for _ in range(N+1))
dp[1] = [0, 1]

for i in range(2, N + 1):
    dp[i][0] = dp[i-1][0] + dp[i-1][1]
    dp[i][1] = dp[i-1][0]
print(sum(dp[N]))
profile
smilegate
post-custom-banner

0개의 댓글