문제 링크: www.acmicpc.net/problem/2302
2302번: 극장 좌석
주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1)
www.acmicpc.net
문제 유형: DP
접근방식:
합의 법칙 -> 두 사건이 동시에 일어나지 않을 경우 더한다.
곱의 법칙 -> 두 사건이 동시에 일어날 경우 곱한다.
합의 법칙, 곱의 법칙
합의 법칙, 곱의 법칙은 [중등수학/중2 수학] - 경우의 수, 합의 법칙, 곱의 법칙에서 공부했었어요. 물론 기억나지 않겠지만요. 합의 법칙, 곱의 법칙은 경우의 수를 구하는 방법이에요. 이 과정
mathbang.net
좌석을 옮기는 방법은 2가지다.
1. 좌석을 옮기지 않는 경우 -> dp[n-1]
2. 좌석을 옮기는 경우 -> dp[n-2]
이에 따라 점화식은 다음과 같다.
dp[n] = dp[n-1] + dp[n-2]
코드:
Python 3
n = int(input())
m = int(input())
vip = []
for i in range(0,m):
k = int(input())
vip.append(k)
sit = [1,1,2]
for i in range(3,41):
sit.append(sit[i-2]+sit[i-1])
ans = 1
if m >= 1:
pre = 0
for i in range(0,m):
ans = ans * sit[vip[i]-1-pre]
pre = vip[i]
ans = ans * sit[n-pre]
else:
ans = sit[n]
print(ans)
'Algorithnm > 백준' 카테고리의 다른 글
[백준]2742번: 기찍 N (0) | 2021.01.21 |
---|---|
[백준]2741번: N 찍기 (0) | 2021.01.21 |
[백준]15552번: 빠른 A + B (0) | 2021.01.21 |
[백준]2747번: 피보나치 수 (2) | 2020.12.13 |
[백준] 1915번 : 가장 큰 정사각형 (0) | 2020.12.08 |
최근댓글