We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 15c0cec commit 4517ceaCopy full SHA for 4517cea
minjeong/DynamicProgramming/2025-04-12-[백준]-#2302-극장좌석.py
@@ -0,0 +1,30 @@
1
+import sys
2
+input = sys.stdin.readline
3
+
4
+# 1. 입력
5
+N = int(input()) # 좌석의 개수
6
+M = int(input()) # 고정석의 개수
7
+vip_list = [int(input()) for _ in range(M)] # VIP 고정석 번호 리스트
8
9
+# 2. DP 초기화
10
+dp = [0] * (N + 1)
11
+dp[0], dp[1] = 1, 1
12
13
+# 3. 피보나치 수열 기반 DP 채우기
14
+for i in range(2, N+1):
15
+ dp[i] = dp[i-1] + dp[i-2]
16
17
+# 4. 좌석 구간별 계산
18
+answer = 1
19
+prev = 0 # 이전 VIP 좌석 번호
20
21
+for vip in vip_list:
22
+ section = vip - prev - 1 # VIP 좌석 전까지 자유 좌석 구간 길이
23
+ answer *= dp[section] # 그 구간에서 가능한 배치 수 곱하기
24
+ prev = vip # 현재 VIP를 기준으로 다음 구간 나눌 준비
25
26
+# 5. 마지막 구간 처리 (VIP 이후 남은 좌석이 있는 경우)
27
+section = N - prev
28
+answer *= dp[section]
29
30
+print(answer)
0 commit comments