Algorithm/Dynamic Programming

[Python] 백준 1904번 01타일

코딩쪼앙 2023. 2. 9. 21:22

문제

 

[Python] 백준 1904번 01타일 성공

01타일 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 14112 5932 4958 41.399% 문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리

chancoding.tistory.com

입력

  • 첫 번째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 1,000,000)

출력

  • 첫 번째 줄에 지원이가 만들 수 있는 길이가 N인 모든 2진 수열의 개수를 15746으로 나눈 나머지를 출력한다.

입력 예제

4

출력 예제

5

문제 풀이

  • 조건을 살펴보면 i번째 가능한 타일의 개수는 (i - 1)의 개수 + (i - 2)의 개수이다.
  • 따라서 점화식은 아래와 같다.
dp[i] = (dp[i - 1] + dp[i - 2]) % 15746

  •  

코드

n = int(input())
dp = [0] * 1000001
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
    dp[i] = (dp[i - 1] + dp[i - 2]) % 15746
print(dp[n])

'Algorithm > Dynamic Programming' 카테고리의 다른 글

[Python] 백준 11053번 가장 긴 증가하는 부분수열  (0) 2023.02.10
[Python] 백준 1463번 1로 만들기  (0) 2023.02.09
[Python] 편집거리  (0) 2023.02.09
[Python] 퇴사  (0) 2023.02.08
[Python] 못생긴 수  (0) 2023.02.08