01타일 - 실버 3 (백준 , DP)

2023. 1. 18. 18:22코딩 테스트 준비

728x90
반응형
fibo = [0] * 1000000

fibo[0] = 1
fibo[1] = 2

N = int(input())
if N == 1:
  print(1)
elif N == 2:
  print(2)
else:
  for i in range(2, N):
    fibo[i] = (fibo[i-2] + fibo[i-1])%15746
  
  print(fibo[N-1])

 

피보나치인데 그걸 눈치를 못챘다...

 

잘 생각을 해보자 1에는 1이, 2에는 00이랑 11이 있다. 

 

3이 되려면 100, 001, 111이다.

 

이는 1에 (1)00을 2에 (00,11)1을 더한 것이다.

 

4도 그렇다.

 

2에 (00,11)에 00, 3에 (100,001,111)에 1을 더한 값이다...

 

제발 잘 생각하고 너무 어렵게 보지말고 더해지는 것을 볼때 피보나치를 먼저 생각해서 차분히 보자.

728x90
반응형