diff --git a/백준/Gold/1947. 선물 전달/README.md b/백준/Gold/1947. 선물 전달/README.md new file mode 100644 index 0000000..2a27ce2 --- /dev/null +++ b/백준/Gold/1947. 선물 전달/README.md @@ -0,0 +1,32 @@ +# [Gold III] 선물 전달 - 1947 + +[문제 링크](https://www.acmicpc.net/problem/1947) + +### 성능 요약 + +메모리: 72100 KB, 시간: 444 ms + +### 분류 + +조합론, 다이나믹 프로그래밍, 수학 + +### 제출 일자 + +2025년 3월 4일 20:38:39 + +### 문제 설명 + +
이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.
+ +대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.
+ +모든 사람은 선물을 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.
+ +### 입력 + +첫째 줄에 ACM-ICPC 대회에 참가한 학생의 수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
+ +### 출력 + +경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.
+ diff --git a/백준/Gold/1947. 선물 전달/선물 전달.py b/백준/Gold/1947. 선물 전달/선물 전달.py new file mode 100644 index 0000000..09af4c9 --- /dev/null +++ b/백준/Gold/1947. 선물 전달/선물 전달.py @@ -0,0 +1,16 @@ +import sys + +input = sys.stdin.readline + +N = int(input()) + +D = [0] * (N+5) +D[0] = 0 +D[1] = 0 +D[2] = 1 +D[3] = 2 + +for i in range(3, N+1): + D[i] = ((i-1) * (D[i-2] + D[i-1]))%1000000000 + +print(D[N]) \ No newline at end of file