공부/백준

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

상연 2020. 10. 22. 17:52

목차

    2798번: 블랙잭 링크

    코드

    #include <iostream>
    using namespace std;
    
    int main() {
        int card[100];
        int n, m;
        int max;
        cin >> n >> m;
    
        for(int i=0; i<n; i++){
            cin >> card[i];
        }
        max = 0;
    
        for(int j = 0; j < (n-2); j++){
            for(int k = (j+1); k < (n - 1); k++){
                for(int l = (k+1); l < n; l++){
                    if((card[j] + card[k] + card[l] <= m) && (card[j] + card[k] + card[l] > max))
                        max = card[j] + card[k] + card[l];
                }
            }
        }
        cout << max;
    
    }

    사견

    크게 어렵지 않은 문제이다.
    일종의 조합...? 인가 조합이라면 조합인거 같다.
    N개의 카드 중 3개를 선택하는 모든 경우의 수에서 m에 가장 근접한 값을 찾는 것이니까.

    선택하는 카드의 수가 주어졌기 때문에 쉬운 문제였다.
    반복문 3개를 돌리면서 모든 경우의 수를 찾아주면 되는 것이기 때문에,

    다만 선택하는 카드의 수가 주어지지 않았다면 조금 더 생각할 부분이 있는 문제이다.