Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준1107
- 개수 세기
- PreferenceManager
- Class Delegation
- 새싹
- Counting The number
- 2525
- 10430
- kotlin
- 기본메신저
- 백준
- 파이썬
- safari world
- 백준3085
- debugSymbolLevel
- 디버그심볼
- 코틀린
- dp
- 10807
- 꼬마 정민
- 사파리 월드
- 1330
- BitMasking
- 백준1476
- 18108
- 25083
- 브루트포스
- Android
- 10926
- baekjoon
Archives
- Today
- Total
세상을 더 좋게
[백준] 1309 '동물원' 파이썬(python) 본문
https://www.acmicpc.net/problem/1309
1309번: 동물원
첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.
www.acmicpc.net
n = int(input())
dp = [[0, 0, 0] for _ in range(n+1)]
dp[1][0] = 1
dp[1][1] = 1
dp[1][2] = 1
for i in range(2, n+1):
# no lion
dp[i][0] = (dp[i-1][0] + dp[i-1][1] + dp[i-1][2]) % 9901
# left lion
dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % 9901
# right lion
dp[i][2] = (dp[i-1][0] + dp[i-1][1]) % 9901
print(sum(dp[n]) % 9901)
Point
- dp테이블을 만든 뒤 이용하여 문제를 해결하는 DP 문제
- 세 가지의 경우를 나눌 수 있다. 사자가 안 놓인 경우, 사자가 왼쪽 칸에 놓인 경우, 사자가 오른쪽에 놓인 경우
- 사자가 안 놓인 경우는 이전에 경우 세가지를 모두 더 하고, 나머지는 똑같은 칸에 놓이면 안되기에 놓일 칸을 제외한 두가지를 더한다.
'Algorithm > DP' 카테고리의 다른 글
[백준] 9465 '스티커' 파이썬(python) (0) | 2021.12.23 |
---|---|
[백준] 11057 '오르막 수' 파이썬(python) (0) | 2021.12.22 |
[백준] 1149 'RGB거리' 파이썬(python) (0) | 2021.12.21 |
[백준] 15988 '1, 2, 3 더하기 3' 파이썬(python) (0) | 2021.12.14 |
[백준] 2225 '합분해' 파이썬(python) (0) | 2021.12.10 |