๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 2775๋ฒˆ : ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

by nitronium102 2021. 8. 3.

๋ฌธ์ œ

ํ‰์†Œ ๋ฐ˜์ƒํšŒ์— ์ฐธ์„ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” ์ฃผํฌ๋Š” ์ด๋ฒˆ ๊ธฐํšŒ์— ๋ถ€๋…€ํšŒ์žฅ์ด ๋˜๊ณ  ์‹ถ์–ด ๊ฐ ์ธต์˜ ์‚ฌ๋žŒ๋“ค์„ ๋ถˆ๋Ÿฌ ๋ชจ์•„ ๋ฐ˜์ƒํšŒ๋ฅผ ์ฃผ์ตœํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์ด ์•„ํŒŒํŠธ์— ๊ฑฐ์ฃผ๋ฅผ ํ•˜๋ ค๋ฉด ์กฐ๊ฑด์ด ์žˆ๋Š”๋ฐ, “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

ํ’€์ด

์กฐ๊ธˆ ์ด์ƒํ•œ ์•„ํŒŒํŠธ ๊ฐ™๋‹ค.

01. ๋ฐ˜๋ณต์„ ์ด์šฉ

ํ˜ธ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 14ํ˜ธ๊นŒ์ง€์ด๋ฏ€๋กœ, 15*14 ์ด์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ ํ›„, ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์•„ํŒŒํŠธ์˜ ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•œ๋‹ค.

์ดํ›„ ํ•ด๋‹นํ•˜๋Š” ์ธต๊ณผ ํ˜ธ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ฐ”๋กœ ์ถœ๋ ฅํ•œ๋‹ค. 

 

ํ•˜์ง€๋งŒ ๊ตณ์ด ์•„ํŒŒํŠธ์˜ ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ,

int arr[15][14]์— ๋จผ์ € 1์ธต์˜ ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ๋„ฃ์€ ํ›„, ์•„๋ž˜ ์ธต์˜ ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋”ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์—ˆ๋‹ค. 

(๋ฌผ๋ก  ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ œํ•œ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์—ฌ์œ ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์•„ํŒŒํŠธ์˜ ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!)

#include <iostream>
using namespace std;

int main(){
    int T, K, N;
    cin >> T;
    for (int i=0; i<T; i++){
        cin >> K;
        cin >> N;
        int arr[15][14]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
        // k์ธต์˜ nํ˜ธ์— ๋ช‡ ๋ช…์ด ์‚ด๊ณ  ์žˆ๋Š”๊ฐ€
        int resident;
        for (int floor=1; floor<=K; floor++){
            for (int room=0; room<N; room++){
                resident += arr[floor-1][room];
                arr[floor][room] = resident;
            }
            resident=0;
        }
        cout << arr[K][N-1] << endl;
    }
}

๋ฐ˜๋ณต๋ฌธ์„ ํ•œ ๋ฒˆ ๋” ์จ์„œ ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

for (int i = 0; i < t; i++) {
		int res[15][14] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
		cin >> k >> n;
		for (int j = 1; j <= k; j++) {
			for (int l = 0; l < n; l++) {
				for (int m = 0; m <= l; m++) {
					res[j][l] += res[j - 1][m];
				}
			}
		}
		cout << res[k][n - 1] << endl;
	}

 

02. ์žฌ๊ท€ ์ด์šฉ

https://aorica.tistory.com/124๋‹˜์˜ ํ’€์ด์ธ๋ฐ ๊ฐ„๊ฒฐํ•ด๋ณด์—ฌ์„œ ๊ณต์œ ํ•œ๋‹ค!

#include <iostream>

using namespace std;

int getNum(int a, int b){
  if(b == 1)
    return 1;
  if(a == 0)
    return b;
  return (getNum(a-1, b) + getNum(a, b-1));
}

int main() {
  int T, k, n;
  cin>>T;
  for(int i=0; i<T; i++){
    cin>>k>>n;
    cout<<getNum(k, n)<<'\n';
  }
}

https://www.acmicpc.net/problem/2775

 

2775๋ฒˆ: ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

์ฒซ ๋ฒˆ์งธ ์ค„์— Test case์˜ ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ์ผ€์ด์Šค๋งˆ๋‹ค ์ž…๋ ฅ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ k, ๋‘ ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค

www.acmicpc.net

3๋ฒˆ๋งŒ์— ์„ฑ๊ณตํ•ด์„œ ๊ธฐ๋ถ„์ด ์ข‹๋‹ค ํฌํฌ

๋Œ“๊ธ€