Algorithm

#백준 1904번 #파이썬 #문제풀이

Eric_Park 2021. 5. 7. 14:22

### 문제설명 

- 1,0 을 주어진 n자리에 각각 할당할 수 있는 수열의 경우의 수를 구하여라. 

- 제한조건: 1은 단독으로 사용 가능. 0은 단독으로 사용불가능. 따라서 00 과 같이 연속된 0으로만 사용가능. 

- 예시) n = 2 면은 [11, 00] 의 경우가 성립. 10, 01은 성립할 수 없음.  

 

### 문제풀이

n=1  , [1] 1

n=2  , [11, 00] 2 

n=3  , [111,100, 001 ] 3

n=4  , [1111, 1100, 1001, 0000, 0011] 5    

 

- 4번을 만드는 요령은, n=3 일때의 요소 앞에 1 이 붙었을 경우, 뒤에 00이 붙었을 경우를 가정해서

중복수를 지워주면 된다.  

# Solution
import sys input = sys.stdin.readline 
n = int(input()) 
dp = [0] * 1000001 
dp[1] = 1 
dp[2] = 2

for k in range(3,n+1): 
  dp[k] = (dp[k-1] + dp[k-2])%15746 

print(dp[n])

### Comment 

- 결과값 n이 피보나치 수열을 이룸.