백준 2302 극장 좌석
2023. 2. 26. 20:37ㆍ코딩 공부 연습
반응형
백준 2302 극장 좌석
오늘은 극장 좌석이라는 문제를 풀어보았다. 우선 간단하게 dp 배열을 만들면 되는데, dp 규칙은 간단한 dp[n] = dp[n-1] + dp[n-2] 이다.
이제 VIP 좌석을 기준으로 그 사이의 좌석들이 조합될 수 있는 가짓수가 바로 dp 이므로,
VIP 좌석들을 기준으로 그 좌석 갯수만큼의 dp 값들을 계속 곱해주면 된다.
- 예외 처리 : VIP 좌석 갯수와 전체 좌석 갯수가 같을 때 처리해 주어야함.
#include <iostream>
#include <vector>
using namespace std;
long long int dp[42];
int main()
{
int n, m;
vector<int> vips;
long long int ans = 1;
cin>>n;
cin>>m;
vips.push_back(0);
if (n == m)
{
cout<<"1\n";
return 0;
}
for(int i = 0; i < m; i++)
{
int tmp;
cin>>tmp;
vips.push_back(tmp);
}
vips.push_back(n+1);
dp[0] = 1;
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
for (int i = 4; i <=n; i++)
{
dp[i] = dp[i-1] + dp[i-2];
}
for (int i = 1; i< vips.size(); i++)
{
int diff = vips[i] - vips[i-1] -1;
ans *= dp[diff];
}
cout<<ans<<"\n";
return 0;
}
'코딩 공부 연습' 카테고리의 다른 글
백준 15900 나무 탈출 (1) | 2023.03.03 |
---|---|
백준 18126 너구리 구구 (1) | 2023.03.02 |
백준 2410 2의 멱수의 합 (0) | 2023.02.24 |
백준 1967 트리의 지름 (1) | 2023.02.24 |
백준 2502 떡 먹는 호랑이 (1) | 2023.02.23 |