chldkato

백준 2193 이친수 (파이썬) 본문

백준

백준 2193 이친수 (파이썬)

chldkato 2020. 3. 3. 17:19

https://www.acmicpc.net/problem/2193

 

2193번: 이친수

0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되

www.acmicpc.net

n-1 이친수 중 맨 뒤가 0이면 n번째에는 뒤에 0, 1을 놓을 수 있고 

                   맨 뒤가 1이면 n번째에는 0만 놓을 수 있다

 

풀어보면 n은 3 이상부터 a[n] = 2 * a[n-2] + a[n-3]의 규칙을 보인다 

import sys

input = sys.stdin.readline

n = int(input())
if n == 1:
    print(1)
    sys.exit()
a = [0 for _ in range(n+1)]
a[1], a[2] = 1, 1

for i in range(3, n+1):
    a[i] = 2 * a[i-2] + a[i-3]

print(a[n])

Comments