글 작성자: 개발섭
 

2302번: 극장 좌석

주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1)

www.acmicpc.net

어떤식으로 풀었는지?

이번 문제 역시 DP문제이다. 

핵심은 결국에 고정된 VIP석을 제외한 나머지 가짓수에 대해서 곱으로 전체 경우를 구한다는 것.

두번째는 Vip좌석을 통해서 남겨진 좌석을 지정된 방법으로 섞었을때 가능한 경우의 수 찾는 것.

 

완벽하게 이문제를 풀지를 못했고, 이분의 블로그를 많이 참고해서 풀었다

http://blog.naver.com/occidere/220854811310

 

[백준] 2302 - 극장 좌석

문제 링크 : https://www.acmicpc.net/problem/2302이 문제는 몇가지 케이스에 대해 귀납적으로 풀어보면 ...

blog.naver.com

 

/** 2020. 2. 26. 오후 2:38:27
 * @author ventulus95
 */
package codeBaekJoon;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class No2302_TheaterSeat {
	
	static int dp[] = new int [41];
	
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		dp[0] = 1;
		dp[1] = 1; 
		dp[2] = 2;
		for(int i = 3; i<=T; i++){
			dp[i] = dp[i-1]+dp[i-2];
		}
		int n = Integer.parseInt(br.readLine());
		int ans = 1;
		int start =0; 
		int stop =0;
		for(int i=0; i<n; i++){
			stop = Integer.parseInt(br.readLine());
			ans *= dp[stop-start-1];
			start = stop;
		}
		ans *= dp[T-stop];
		System.out.println(ans);
	}

}