백준2193 - 이친수 (DP) Python 본문
반응형
https://www.acmicpc.net/problem/2193
문제는 N자리의 이친수 (0으로 시작하지 않으며, 1이 두번으로 나타나지 않는 수)의 갯수를 구하는 문제다.
직접 써보며 점화식을 구할 수 있을 것 같아 각 N자리에 몇 개의 이친수가 존재하는지 헤아렸다.
'''
1 : 1 / 1
2 : 10 / 1
3 : 100 101 / 2
4 : 1000 1001 1010 / 3
5 : 10000 10001 10010 10100 10101 / 5
6 : 100000 100001 100010 100100 101000 100101 101001 101010 / 8
'''
헤아리다보니 [1,1,2,3,5,8] 라는 익숙한 수의 조합이 등장한다.
보였다! 틈새의 점화식!
전체 소스 코드
import sys
data_temp = sys.stdin if sys.platform == 'linux' else open('입력.txt', 'r')
input_data = data_temp.read()
def solution (data) :
n = int(data)
dp = [0] * (n + 1)
dp[0] = dp[1] = 1
if n > 1 : dp[2] = 1
for i in range(3, n+1) :
dp[i] = dp[i-1] + dp[i-2]
print(dp[-1])
solution(input_data)
반응형
'개발 > algorithm' 카테고리의 다른 글
백준6118 - 숨바꼭질 (BFS) Python (1) | 2023.11.01 |
---|---|
백준20551 - Sort 마스터 배지훈의 후계자 (이분탐색) Python (1) | 2023.10.31 |
백준9020 - 골드바흐의 추측 Python (0) | 2023.10.29 |
백준5557 - 1학년 (DP) Python (1) | 2023.10.28 |
백준20291 - 파일 정리 Python | JS (0) | 2023.10.27 |
Comments