알고리즘/[python] 백준 BOJ
[Python] 백준 2193 이친수
Alan_Kim
2022. 12. 22. 23:58
728x90
반응형
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
문제 해결
- 다이나믹 프로그래밍(dp)인 것은 쉽게 눈치 챌 수 있다.
- n자리 이친수 개수를 dp[n]으로 놓을 때 dp[n] = dp[n-1] + dp[n-2]임을 알아야 한다.
그림판으로 그리면
dp[n]=dp[n-1] + dp[n-2]임을 알 수 있다.
CODE
import sys
input= sys.stdin.readline
n = int(input())
dp = [0 for _ in range(91)]
dp[1] = 1 #한자리 수는 1 한개
dp[2] = 1 # 두자리는 10 한개 11은 안되므로
if n>2:
for i in range(3,n+1):
dp[i] = dp[i-1] + dp[i-2]
print(dp[n])
728x90
반응형