서두르지 말고 쉬지 말자

백준 2798번 블랙잭(C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 2798번 블랙잭(C++)

philos 2025. 3. 10. 13:35

solved.ac 난이도 : 브론즈 2

문제 유형 : 브루트 포스 알고리즘

문제 해결 전략 : 삼중 반복문으로 서로 다른 3개의 카드의 합은 모두 구해서 가장 M에 가까운 것이 출력되게 했다.

문제 해결 소감 : 이제 브론즈 난이도는 쉽게 풀리는 수준이 된 거 같아서 뿌듯하다

#include <iostream>
#include <vector>
std::vector<int> card;
int N, M; // N개의 카드 중 3개를 골라서서 M에 가까까운 수 만들기
int A, B, C;
int result = 0;
int main()
{
    std::cin >> N >> M;
    for (int i = 0; i < N; ++i)
    {
        int n;
        std::cin >> n;
        card.push_back(n);
    } // 카드 숫자들 적혀있는 벡터 만들기
    for (int i = 0; i < N; ++i)
    {
        for (int l = 0; l < N; ++l)
        {
            for (int k = 0; k < N; ++k)
            {
                int sum = card[i] + card[l] + card[k];
                if (sum <= M && (i != l && l != k && k != i))
                {
                    if (sum > result)
                        result = sum;
                }
            }
        }
    }

    std::cout << result;
    return 0;
}
반응형