문제
https://www.acmicpc.net/problem/2302
2302번: 극장 좌석
주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1)
www.acmicpc.net
풀이
DP 배열은 연속되는 수가 i개일 때의 경우의 수이다.
DP 배열을 구하고 연속되는 수마다 곱해주면 답이 된다.
코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int m = Integer.parseInt(br.readLine());
int dp [] = new int [45];
ArrayList <Integer> vip = new ArrayList<>();
vip.add(0);
for(int i=0;i<m;i++) {
vip.add(Integer.parseInt(br.readLine()));
}
vip.add(n+1);
dp[0] = 1;
dp[1] = 1;
dp[2] = 2;
for(int i=3;i<=n;i++) {
dp[i] = dp[i-1]+dp[i-2];
}
int answer = 1;
for(int i=1;i<vip.size();i++) {
answer *= dp[vip.get(i)-vip.get(i-1)-1];
}
System.out.print(answer);
}
}