Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- DP
- 그래프
- Python
- DFS
- 투 포인터
- 애드 혹
- 구현
- 정렬
- 그리디
- 에라토스테네스의 체
- 누적 합
- 플로이드-워셜
- 정수론
- 브루트포스
- BFS
- 2357
- boj
- 문자열
- 13164
- JavaScript
- 이분 탐색
- 모던 JavaScript 튜토리얼
- 세그먼트 트리
- 트리
- 해시 테이블
- SSAFY
- 맵
- 슬라이딩 윈도우
- 수학
- 싸피
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 10978 - 기숙사 재배정 (Python, JavaScript) 본문
아이디어
DP로 완전순열을 구한다.
풀이 #1 (Python)
점화식을 구하기 위해 임의로 학생과 기숙사에 번호를 매기고, 1번 학생이 K번 기숙사에 배정되는 경우를 고려한다.
K번 학생이 1번 기숙사에 배정되는 경우의 수는 1번 학생과 K번 학생을 제외하고 학생 수가 N-2인 경우의 수와 같다.
K번 학생이 1번 기숙사에 배정되지 않는 경우의 수는 1번 학생을 제외하고 학생 수가 N-1인 경우의 수와 같다.
K는 1을 제외한 N-1개의 수가 가능하므로 두 경우의 수를 더하여 N-1만큼 곱하면 학생 수가 N인 경우의 수를 구할 수 있다.
import sys
input = sys.stdin.readline
def solution():
T = int(input())
dp = [0]*21
dp[2] = 1
for i in range(3, 21):
dp[i] = (dp[i-1]+dp[i-2])*(i-1)
for _ in range(T):
N = int(input())
print(dp[N])
solution()
풀이 #2 (JavaScript)
readline 모듈을 사용해 입력 받는다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', (line) => {
input.push(line);
}).on('close', () => {
solution();
process.exit();
});
function solution() {
const T = Number(input[0]);
let dp = Array(21).fill(BigInt(0));
dp[2] = BigInt(1);
for (let i=3; i<21; i++) {
dp[i] = (dp[i-1]+dp[i-2])*BigInt(i-1);
}
for (let t=1; t<=T; t++) {
N = Number(input[t]);
console.log(String(dp[N]));
}
}
solution();
이 문제에서 fs 모듈을 사용하면 런타임 에러가 발생한다.
// 런타임 에러 (EACCES) 발생 코드
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
...
'알고리즘' 카테고리의 다른 글
[BOJ] 13699 - 점화식 (Python, JavaScript) (1) | 2023.05.27 |
---|---|
[BOJ] 16988 - Baaaaaaaaaduk2 (Easy) (Python, JavaScript) (0) | 2023.05.26 |
[BOJ] 6597 - 트리 복구 (Python, JavaScript) (0) | 2023.05.24 |
[BOJ] 7432 - 디스크 트리 (Python, JavaScript) (0) | 2023.05.23 |
[BOJ] 14713 - 앵무새 (Python, JavaScript) (0) | 2023.05.22 |
Comments