Post

๐Ÿงฉ Baekjoon 2775 - ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

๐Ÿงฉ 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๋ฌธ ๋‚ด์—์„œ ์“ฐ๋Š” ๋ณ€์ˆ˜์—๋„ ์˜๋ฏธ ์žˆ๋Š” ๋ณ€์ˆ˜ ๋ช…์„ ์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์„ ์ฒด๊ฐํ–ˆ๋‹ค.
This post is licensed under CC BY 4.0 by the author.