반응형

   

문제

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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기