https://www.acmicpc.net/problem/2302
2302번: 극장 좌석
주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1)
www.acmicpc.net
dp문제
문제에 주어진 배열들을 그리다 보면 피보나치와 같은 점화식이 그려진다
이를 이용해서 문제를 풀면 해결
n = int(input())
dp = [0]*(n+1)
m = int(input())
arr = []
for i in range(m):
vip = int(input())
arr.append(vip)
result = 1
dp[0] = 1
dp[1] = 1
st = 2
for i in range(st, n+1):
dp[i] = dp[i-1] + dp[i-2]
# 슬라이싱 하여 dp구간 나눠주기
if len(arr)>=1:
cnt = 0
for i in range(len(arr)):
result *= dp[arr[i]-1-cnt]
cnt = arr[i]
result *= dp[n-cnt]
else:
result = dp[n]
print(result)
'Algorithm > baekjoon' 카테고리의 다른 글
| [파이썬]baekjoon 3980: 선발 명단 (0) | 2023.03.07 |
|---|---|
| [파이썬]baekjoon 19949: 영재의 시험 (0) | 2023.03.04 |
| [파이썬]baekjoon 2644: 촌수계산 (0) | 2023.02.28 |
| [파이썬]baekjoon 3079: 입국심사 (1) | 2023.02.18 |
| [파이썬]baekjoon 2156: 포도주 시식 (0) | 2023.02.16 |
댓글