From 3ca3084444e9f57254aba572c8556b0c2980e6d5 Mon Sep 17 00:00:00 2001 From: SSUM <116950962+ssum21@users.noreply.github.com> Date: Tue, 4 Mar 2025 20:39:22 +0900 Subject: [PATCH] =?UTF-8?q?[Gold=20III]=20Title:=20=EC=84=A0=EB=AC=BC=20?= =?UTF-8?q?=EC=A0=84=EB=8B=AC,=20Time:=20444=20ms,=20Memory:=2072100=20KB?= =?UTF-8?q?=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 백준/Gold/1947. 선물 전달/README.md | 32 ++++++++++++++++++++++++++ 백준/Gold/1947. 선물 전달/선물 전달.py | 16 +++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 백준/Gold/1947. 선물 전달/README.md create mode 100644 백준/Gold/1947. 선물 전달/선물 전달.py 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