반응형
문제
https://www.acmicpc.net/problem/1904
이 문제의 규칙을 살펴보면
n 수열
1 1
2 11,00
3 100,111,001
4 1100,0000,1001,1111,0011
5 10000,11100,00100,11001,00001,10011,11111,00111
...
n-2에 00을 붙이고 n-1에 1을 붙이면 n의 수열이 나오는것을 알수있다.
수열의 개수로 계산했을경우 f(n)=f(n-1)+f(n-2) 피보나치의 형태와 같다.
나머지 계산이 아닌 일반적인 계산으로 1000000의 가짓수를 계산하면 컴퓨터가 멈추는
모습을 볼수있었다....
1 2 3 4 5 6 7 8 9 10 11 | n=int(input()) tail_list=[0 for _ in range(n+1)] tail_list[1]=1 if n>1: tail_list[2]=2 for i in range(3,n+1): tail_list[i]=(tail_list[i-1]+tail_list[i-2])%15746 print(tail_list[n]%15746) | cs |
이렇게 각 계산마다 나머지 연산을 해주어 저장해주어야 한다.
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법 백준 1149 (0) | 2020.01.08 |
---|---|
[Python]동적계획법 백준 9461 (0) | 2020.01.08 |
[Python]동적계획법 백준 1003 (0) | 2020.01.07 |
[Python]동적계획법 백준 2748 (0) | 2020.01.07 |
[Python]재귀 백준 11729 (0) | 2019.12.18 |
최근댓글