Algorithm/Algorithm 문제

백준_1947 선물 전달 (조합 순열)

kjyyjk 2024. 4. 8. 20:14

 

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

public class BJ_1947_선물전달 {

    static long t = 1000000000;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        long[] d = new long[n+2]; //n=1 또는 2일 경우 아래 두줄에서 인덱스 에러. 따라서 n+2를 해줌
        d[1] = 0;
        d[2] = 1;

        for (int i=3; i<n+1; i++) {
            d[i] = ((i-1) * (d[i-2] % t + d[i-1] % t)) % t; //d[i] = (n-1) * (d[n-2] + d[n-1])
        }

        System.out.println(new StringBuilder().append(d[n]));
    }
}
 

1947번: 선물 전달

경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.

www.acmicpc.net