[백준] 2798번: 블랙잭

짜장범벅·2022년 8월 2일
0

백준

목록 보기
12/26

1 문제

입력된 수열 중 임의의 3개를 뽑아 특정 수보다 작거나 같은 수 중 가장 큰 수를 return

2 Idea

그냥 냅다 다 찾으면 된다. 다만, 입력받은 수를 vector에 저장해서 sort한 다음 일정값보다 큰 경우 loop를 break하는 방법을 생각해보았으나, sort하는 시간이 더 걸릴 것 같아서 포기함

3 Code

// link: https://www.acmicpc.net/problem/2798

#include <iostream>
#include <vector>
#include <algorithm>

int CalculateBlackJack(std::vector<int>& v, const int N, const int M){
    //find answer
    int answer = -1;

    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){
                const int temp = v[i]+v[j]+v[k];

                if ((temp <= M) && (temp > answer)){
                    answer = temp;
                }
            }
        }
    }

    return answer;
}

int main(){
    int N = 0;
    std::cin >> N;

    int M = 0;
    std::cin >> M;

    //make vector
    std::vector<int> v(N, 0);
    for (int i=0; i<N; ++i){
        std::cin >> v[i];
    }

    std::cout << CalculateBlackJack(v, N, M) << std::endl;

    return 0;
}
profile
큰일날 사람

0개의 댓글