실버 3
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net
문제 풀이
남은 타일은 1하나로만 이루어진 타일, 0 두개로 이루어진 타일 한쌍이다.
n부터 써보면서 규칙을 찾아보면 다음과 같다. 즉, 피보나치 수열과 같은 형태로 진행됨을 알 수 있다.
n = 0, 1개
n = 1, 1개
n = 2, 00, 11 -> 2개 (1+1)
n = 3, 100, 001, 111 -> 3개 (1+2)
n = 4, 0011, 1100, 0000, 1001, 1001 -> 5개 (2+3)
n = 5, 00111, 10011, 11001, 11100, 00001, 10000, 00100, 11111 -> 8개 (3+5)
코드
n = int(input())
dp = [0] * (n+1)
dp[0], dp[1] = 1, 1
for i in range(2, n+1):
dp[i] = (dp[i-1] + dp[i-2]) % 15746
print(dp[n])
느낀점
15746으로 나눈 나머지를 저장해주어야 메모리 오류가 나지 않는다.
728x90
'Algorithm > Problem' 카테고리의 다른 글
| [Baekjoon] 1149번 : RGB거리 (0) | 2022.01.20 |
|---|---|
| [Baekjoon] 9461번 : 파도반 수열 (1) | 2022.01.19 |
| [Baekjoon] 1003번 : 피보나치 함수 (0) | 2022.01.19 |
| [Baekjoon] 14889번 - 스타트와 링크 (0) | 2022.01.18 |
| [Baekjoon] 2580번 : 스도쿠 (0) | 2022.01.17 |