Lewis's Tech Keep

[백준] 극장 좌석 본문

Java/알고리즘

[백준] 극장 좌석

Lewis Seo 2021. 4. 12. 17:37

참고 : www.acmicpc.net/problem/2302

 

2302번: 극장 좌석

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

www.acmicpc.net

- dp 문제

- dp[i] : dp[i-1] + dp[i-2] (ex. 1234 -> dp[3] 123 + 4 : 하나만 바꿈, dp[2] 12 + 34 : 둘 다 바꿈 )

- 나머지는 중복되므로 dp[i] = dp[i-1] + dp[i-2]가 성립.

- 경우의 수에 따라 vip 좌석 전 후 경우의 수 : a*b (ex a : 2가지 b: 2가지 = a*b)

 

더보기
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int[] dp = new int[N+1];
        int answer = 1;
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= N; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }

        int prevVip = 0;

        for (int i = 1; i <= M; i++) {
            int vip = sc.nextInt();
            answer *= dp[vip - prevVip - 1];
            prevVip = vip;
        }

        answer *= dp[N - prevVip];

        System.out.println(answer);
    }
}

'Java > 알고리즘' 카테고리의 다른 글

[백준] 외판원 순회  (0) 2021.04.15
[백준] 고층 빌딩  (0) 2021.04.13
[프로그래머스] 길찾기 게임  (0) 2021.04.12
[백준] 줄세우기(2631)  (0) 2021.04.08
[백준] 내려가기  (0) 2021.04.07
Comments