어디까지 갈 수 있을까?
[DP] 백준 2193 이친수 본문
문제링크 www.acmicpc.net/problem/2193
이게 왜 피보나치인 지 궁금해서 질문 게시판 보고 정리했다
[답코드]
1
2
3
4
5
6
7
8
9
|
import sys
input=sys.stdin.readline
n=int(input())
fib=[1, 1]
for i in range(n-2):
fib.append(fib[-1]+fib[-2])
print(fib[-1])
|
cs |
[풀이법]
fib(n)=fib(n-1)+fib(n-2)가 나오는 이유는
① 뒤에 0은 아무데나 붙을 수 있다 fib(n-1) 수열에 0을 붙이면 된다
② 뒤에 1이 붙는 수열은 사실상 2자리가 고정돼있다고 생각해야한다.
1이 연속될 수 없으므로 fib(n-2)의 수에 01이 붙어 fib(n)을 구성한다고 생각해야 한다.
코테 풀다보면 나빼고 다 천재인 느낌이다
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[플로이드 워셜] 백준 11403 경로 찾기 (0) | 2021.02.27 |
---|---|
[이분탐색] 백준 7795 먹을 것인가 먹힐 것인가 (0) | 2021.02.19 |
[BFS/DFS] 백준 2606 바이러스 (0) | 2021.02.17 |
[그리디] 백준 1783 병든 나이트 (0) | 2021.02.10 |
[그리디] 백준 18238 ZOAC 2 (0) | 2021.02.10 |
Comments