https://www.acmicpc.net/problem/1904
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net
아이디어
dp 문제이다.
N | 갯수 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 8 |
6 | 13 |
. . . |
N을 1씩 증가시키면서 구하면 아래와 같은 규칙을 찾을 수 있다.
만들 수 있는 길이가 N인 모든 2진 수열의 개수 = N-1인 모든 2진 수열의 개수 + N-2인 모든 2진 수열의 개수
즉 dp[n] = dp[n-1] + dp[n-2] 이다.
전체 코드
N = int(input())
dp = [0] * (N + 2)
dp[1], dp[2] = 1, 2
for i in range(3, N + 1):
dp[i] = (dp[i-1] + dp[i-2]) % 15746
print(dp[N])
'Coding Test > Python' 카테고리의 다른 글
[백준/백트래킹] 15649번: N과 M(1) (실버3, python) (1) | 2024.01.29 |
---|---|
[백준/dp] 2579번: 계단 오르기 (실버3, python) (0) | 2024.01.28 |
[프로그래머스] 큰 수 만들기 (level2, python) (0) | 2024.01.23 |
[프로그래머스] 체육복(level1, python) (0) | 2024.01.23 |
[LeetCode] 322. Coin Change (medium, python) (0) | 2024.01.23 |