문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
접근
그림을 보면 위와 같은 규칙을 찾을 수 있다. 피보나치 수를 구해주면 된다. 예전에 피보나치 수를 구하는 문제에서 정직하게 재귀를 사용했다가 시간초과가 나오고, 배열에 저장해도 시간초과가 나왔던 기억이 있다. 그래서 변수만 사용해서 답을 구했다.
코드
n = int(input())
if n < 3:
print(n%10007)
else:
a, b = 1, 2
for _ in range(n-2):
a, b = b, a+b
print(b%10007)
'Algorithm > Python' 카테고리의 다른 글
[파이썬/백준 1389]케빈 베이컨의 6단계 법칙 (0) | 2021.04.17 |
---|---|
[파이썬/백준 2667]단지번호붙이기 (0) | 2021.04.15 |
[파이썬/백준 1260]DFS와 BFS (0) | 2021.04.15 |
[파이썬/프로그래머스]압축 (0) | 2021.04.14 |
[파이썬/프로그래머스][1차]프렌즈4블록 (0) | 2021.04.10 |