๐งฉ Baekjoon 2775 - ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ
๋ฌธ์
ํ์ ๋ฐ์ํ์ ์ฐธ์ํ๋ ๊ฒ์ ์ข์ํ๋ ์ฃผํฌ๋ ์ด๋ฒ ๊ธฐํ์ ๋ถ๋ ํ์ฅ์ด ๋๊ณ ์ถ์ด ๊ฐ ์ธต์ ์ฌ๋๋ค์ ๋ถ๋ฌ ๋ชจ์ ๋ฐ์ํ๋ฅผ ์ฃผ์ตํ๋ ค๊ณ ํ๋ค.
์ด ์ํํธ์ ๊ฑฐ์ฃผ๋ฅผ ํ๋ ค๋ฉด ์กฐ๊ฑด์ด ์๋๋ฐ, โa์ธต์ bํธ์ ์ด๋ ค๋ฉด ์์ ์ ์๋(a-1)์ธต์ 1ํธ๋ถํฐ bํธ๊น์ง ์ฌ๋๋ค์ ์์ ํฉ๋งํผ ์ฌ๋๋ค์ ๋ฐ๋ ค์ ์ด์์ผ ํ๋คโ ๋ ๊ณ์ฝ ์กฐํญ์ ๊ผญ ์งํค๊ณ ๋ค์ด์์ผ ํ๋ค.
์ํํธ์ ๋น์ด์๋ ์ง์ ์๊ณ ๋ชจ๋ ๊ฑฐ์ฃผ๋ฏผ๋ค์ด ์ด ๊ณ์ฝ ์กฐ๊ฑด์ ์งํค๊ณ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฃผ์ด์ง๋ ์์ ์ ์ k์ n์ ๋ํด k์ธต์ nํธ์๋ ๋ช ๋ช ์ด ์ด๊ณ ์๋์ง ์ถ๋ ฅํ๋ผ. ๋จ, ์ํํธ์๋ 0์ธต๋ถํฐ ์๊ณ ๊ฐ์ธต์๋ 1ํธ๋ถํฐ ์์ผ๋ฉฐ, 0์ธต์ iํธ์๋ i๋ช ์ด ์ฐ๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ Test case์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ์ผ์ด์ค๋ง๋ค ์ ๋ ฅ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ค์ ์ ์ k, ๋ ๋ฒ์งธ ์ค์ ์ ์ n์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ๊ฐ์ Test case์ ๋ํด์ ํด๋น ์ง์ ๊ฑฐ์ฃผ๋ฏผ ์๋ฅผ ์ถ๋ ฅํ๋ผ.
์ ํ
- 1 โค k, n โค 14
์์
โ ์ ๋ ฅ 1
1
2
3
4
5
2
1
3
2
3
โ ์ถ๋ ฅ 1
1
2
6
10
์์ฑ ์ฝ๋
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
32
33
34
35
36
37
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 1. ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
// 2. ํ
์คํธ ์ผ์ด์ค ์ฒ๋ฆฌ
for (int i = 0; i < t; i++) {
// ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
int k = Integer.parseInt(br.readLine());
int n = Integer.parseInt(br.readLine());
int[][] apart = initApart(k, n);
// DP
for (int floor = 1; floor <= k; floor++) {
for (int room = 1; room <= n; room++) {
apart[floor][room] = apart[floor - 1][room] + apart[floor][room - 1];
}
}
// ์ถ๋ ฅ
System.out.println(apart[k][n]);
}
}
private static int[][] initApart(int k, int n) {
int[][] apart = new int[k + 1][n + 1];
for (int j = 1; j <= n; j++) apart[0][j] = j;
return apart;
}
}
for
๋ฌธ ๋ด์์ ์ฐ๋ ๋ณ์์๋ ์๋ฏธ ์๋ ๋ณ์ ๋ช ์ ์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ์ ์ ์ฒด๊ฐํ๋ค.