๐Ÿ’œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๐Ÿ’œ ๋ฐฑ์ค€

[๋ฐฑ์ค€] C 21์ผ์ฐจ (๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ #2775๋ฒˆ)

eyes from es 2022. 12. 22. 17:05
728x90
๋ฐ˜์‘ํ˜•

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

 

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

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

www.acmicpc.net


1. ๋ฌธ์ œ

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

์ด ์•„ํŒŒํŠธ์— ๊ฑฐ์ฃผ๋ฅผ ํ•˜๋ ค๋ฉด ์กฐ๊ฑด์ด ์žˆ๋Š”๋ฐ, “a์ธต์˜ bํ˜ธ์— ์‚ด๋ ค๋ฉด ์ž์‹ ์˜ ์•„๋ž˜(a-1)์ธต์˜ 1ํ˜ธ๋ถ€ํ„ฐ bํ˜ธ๊นŒ์ง€ ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜์˜ ํ•ฉ๋งŒํผ ์‚ฌ๋žŒ๋“ค์„ ๋ฐ๋ ค์™€ ์‚ด์•„์•ผ ํ•œ๋‹ค” ๋Š” ๊ณ„์•ฝ ์กฐํ•ญ์„ ๊ผญ ์ง€ํ‚ค๊ณ  ๋“ค์–ด์™€์•ผ ํ•œ๋‹ค.

์•„ํŒŒํŠธ์— ๋น„์–ด์žˆ๋Š” ์ง‘์€ ์—†๊ณ  ๋ชจ๋“  ๊ฑฐ์ฃผ๋ฏผ๋“ค์ด ์ด ๊ณ„์•ฝ ์กฐ๊ฑด์„ ์ง€ํ‚ค๊ณ  ์™”๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ฃผ์–ด์ง€๋Š” ์–‘์˜ ์ •์ˆ˜ k์™€ n์— ๋Œ€ํ•ด k์ธต์— nํ˜ธ์—๋Š” ๋ช‡ ๋ช…์ด ์‚ด๊ณ  ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•˜๋ผ. ๋‹จ, ์•„ํŒŒํŠธ์—๋Š” 0์ธต๋ถ€ํ„ฐ ์žˆ๊ณ  ๊ฐ์ธต์—๋Š” 1ํ˜ธ๋ถ€ํ„ฐ ์žˆ์œผ๋ฉฐ, 0์ธต์˜ iํ˜ธ์—๋Š” i๋ช…์ด ์‚ฐ๋‹ค.

 

2. ์ž…๋ ฅ

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

 

3. ์ถœ๋ ฅ

๊ฐ๊ฐ์˜ Test case์— ๋Œ€ํ•ด์„œ ํ•ด๋‹น ์ง‘์— ๊ฑฐ์ฃผ๋ฏผ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.

 

 

4. ๋ฌธ์ œํ’€์ด

์ถœ์ฒ˜: https://crazykim2.tistory.com/586

arr[i][j]  =  arr[i][j-1]   +   arr[i-1][j];

 

 

1) ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ

#include <stdio.h>
#include <stdlib.h>

void find(int k, int n){
    int arr[k][n];
    
    for(int i=0; i<n; i++){
        arr[0][i]=i+1;
        //printf("arr[0][%d]= %d\n",i,arr[0][i]);
    }
    
    for(int i=1; i<=k; i++){
        for(int j=0; j<n; j++){
            if(j==0){
                arr[i][j]=1;
                //printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
            }
            else{
                arr[i][j]=arr[i][j-1] + arr[i-1][j];
                //printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
            }
    }
    printf("%d\n", arr[k][n-1]);
    }
}

int main()
{
    int test,k,n;
    scanf("%d",&test);
    
    for(int i=0; i<test; i++){
        scanf("%d",&k);
        scanf("%d",&n);
        find(k,n);
    }

    return 0;
}

์ ‘๊ทผ ๋ฐฉ์‹

15,15,๋ฐฐ์—ด๋กœ ๊น” ํ•„์š” ์—†์ด scanf๋กœ ๋ฐ›์„ ๋•Œ, 1์ธต 3ํ˜ธ๋ฉด 1์ธต 3ํ˜ธ๊นŒ์ง€๋งŒ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๋ฉด ๋˜๊ฒ ์ง€? 

๊ทผ๋ฐ ํ•œ๋ฒˆ๋งŒ ๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๋ฒˆ scanf๋กœ ๋ฐ›์•„์„œ k,n์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ๋•Œ๋งˆ๋‹ค ์•„ํŒŒํŠธ ์ฃผ๋ฏผ์ˆ˜ ๋ฐฐ์—ด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•ด์•ผ ํ•จ -> ์‹œ๊ฐ„ ์˜ค๋ž˜ ๊ฑธ๋ฆผ, arr ์ค‘๋ณต

 

 

2) 15,15 ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ๊น”์•„ ๋†“์ž (์ตœ์ข…)

#include <stdio.h>
#include <stdlib.h>

int arr[15][15];
    
void find(){
    for(int i=0; i<15; i++){
        arr[0][i]=i+1;
    }
    
    for(int i=1; i<=15; i++){
        for(int j=0; j<15; j++){
            if(j==0){
                arr[i][j]=1;
            }
            else{
                arr[i][j]=arr[i][j-1] + arr[i-1][j];
            }
        }
    }
}

int main()
{
    int test,k,n;
    scanf("%d",&test);
    find();
    
    for(int i=0; i<test; i++){
        scanf("%d",&k);
        scanf("%d",&n);
        printf("%d\n",arr[k][n-1]);
    }

    return 0;
}

6. ๊ฒฐ๊ณผ

728x90
๋ฐ˜์‘ํ˜•