1 ๋ถ„ ์†Œ์š”

๋ธ”๋ž™์žญ ๋ฌธ์ œ

๋ธ”๋ž™์žญ ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ์นด๋“œ์™€ ์ตœ๋Œ€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ฃผ์–ด์ง„ ์นด๋“œ ์ค‘ 3๊ฐœ๋ฅผ ์„ ํƒํ•ด ๊ทธ ํ•ฉ์ด ์ตœ๋Œ€ ์ˆซ์ž์— ๊ฐ€์žฅ ๊ทผ์ ‘ํ•˜๊ฒŒ ๋งž์ถ”๋Š” ๋ฌธ์ œ์ด๋‹ค.

[์ž…๋ ฅ]

5 21
5 6 7 8 9


[์ถœ๋ ฅ]

21

๋ธŒ๋ฃจํŠธ ํฌ์Šค๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ „๋ถ€ ํƒ์ƒ‰ํ•œ๋‹ค.
๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด 3๋ฒˆ์˜ for๋ฌธ์„ ๊ฑฐ์ณค๋‹ค.

๋จผ์ € ์กฐ๊ฑด์— ๋งž๊ฒŒ ๊ฐ’๋“ค์„ ์ž…๋ ฅ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค.
๊ทธ ๋‹ค์Œ ์ฒซ ๋ฒˆ์จฐ for๋ฌธ์˜ ์กฐ๊ฑด์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

for(int i=0; i<N-2; i++)

(์ฃผ์–ด์ง„ ์นด๋“œ์˜ ๊ฐœ์ˆ˜ - 2) ์ธ N-2๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” ์ด์œ ๋Š” i = 0, 1, 2, ... , N-3 ๊นŒ์ง€ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ด๊ณ , ๊ทธ๋ž˜์•ผ ๋’ค์— ์นด๋“œ๋ฅผ 2๊ฐœ ๋” ๋ฝ‘์•„ ์ด 3๊ฐœ์˜ ์นด๋“œ๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ ๋‹ค์Œ for๋ฌธ์˜ ์กฐ๊ฑด์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

for(int j=i+1; j<N-1; j++)

์•ž์„  for๋ฌธ ์•ˆ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, j=i+1์ธ ์ด์œ ๋Š” ์ด๋ฏธ ์•ž์„œ 1์žฅ์˜ ์นด๋“œ๋ฅผ ์„ ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐ˜๋ณตํ•˜๋Š” ๊ตฌ๊ฐ„์˜ ์ข…์ ์€ N-1์ด๋‹ค.

๋งˆ์ง€๋ง‰ for๋ฌธ์˜ ์กฐ๊ฑด์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

for(int k=j+1; k<N; k++) 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ j์—์„œ ํ•œ ์žฅ์„ ๋ฝ‘์•˜์œผ๋‹ˆ k=j+1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , ์ข…์ ์€ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋ฏ€๋กœ N์ด ๋œ๋‹ค.

์ตœ์ข…์ ์ธ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

[์ฝ”๋“œ]

// N(3<=N<=100), M(10<=M<=300000)
// ์ตœ๋Œ€ํ•œ M๊ณผ ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ ๋‹ค

#include <stdio.h>

int blackjack(int N, int M, int *cards);

int main() {
    
    // N(๋ฝ‘๋Š” ์นด๋“œ์˜ ์ˆ˜)
    // M(๋งž์ถฐ์•ผ ํ•˜๋Š” ์นด๋“œ์˜ ์ˆซ์ž ํ•ฉ)
    int N, M;
    scanf("%d %d", &N, &M);

    if(3>N || N>100 || 10>M || M>300000) {
        printf("๋ฒ”์œ„ ์˜ค๋ฅ˜");
        return 0;
    }

    // ์ฑ…์ƒ์— ๋†“์—ฌ์ง„ ์นด๋“œ
    int cards[N];
    for(int i=0; i<N; i++) {
        scanf("%d", &cards[i]);
    }

    blackjack(N, M, cards);

    return 0;
}

int blackjack(int N, int M, int *cards){
    int result = 0;
    int sum = 0;
    int check = 0;
    
    for(int i=0; i<N-2; i++) {
        for(int j=i+1; j<N-1; j++) {
            for(int k=j+1; k<N; k++) {
                sum = cards[i] + cards[j] + cards[k];
                if(sum > result && sum <= M)
                    result = sum;
            }
        }
    }
    printf("%d", result);

    return result;
}

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ