[Python] 백준 알고리즘 온라인 저지 2193 이친수
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
문제에 제시된 조건을 만족하는 n을 작은 수부터 계산해보니 쉽게 점화식을 만들 수 있었다.
소스코드
import sys
input = sys.stdin.readline
n = int(input())
dp = [0, 1, 1]
for i in range(3, n+1):
dp.append(dp[i-2]+dp[i-1])
print(dp[n])
풀이
자릿수 n을 작은 수부터 생각해보면
n=1 -> 1개 (1)
n=2 -> 1개 (10)
n=3 -> 2개 (100, 101)
규칙적으로 0과 1을 늘려가며 개수가 늘어난다
이를 활용하여 점화식을 만들면 dp[n] = dp[n-2] + dp[n-1]의 식이 성립된다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준 1173번 운동 파이썬 풀이 (0) | 2022.03.28 |
---|---|
백준 11399번 ATM 파이썬 풀이 (0) | 2022.03.25 |
백준 10844번 쉬운 계단 수 파이썬 풀이 (0) | 2022.03.23 |
백준 1931번 회의실 배정 파이썬 풀이 (0) | 2022.03.21 |
백준 3190번 뱀 파이썬 풀이 (0) | 2022.03.14 |