2798번 블랙잭

뻔한·2020년 4월 12일
0

Brute force

목록 보기
4/13

문제 링크

블랙잭

문제 풀이

주어진 카드들 중 입력으로 주어진 값을 넘지 않으면서 최대한 가까운 카드 3장의 합을 출력하는 문제이다. 이는 주어진 카드 중 3장을 뽑는 모든 경우를 돌며 가장 가까운 값을 찾는다.

구현

#include <iostream>
#include <vector>
using namespace std;

int N, M;
vector<int> card;

int maxCard(int idx, int topick, int value) {
    if(value > M) return 0;
    if(topick ==  0) return value;
    
    int ret = 0;
    for(int i = idx; i < card.size(); ++i){
        ret = max(ret, maxCard(i+1, topick-1, value + card[i]));
    }
    return ret;
}
int main() {
    cin >> N >> M;
    for(int i=0;i<N;++i) {
        int input;
        cin >> input;
        card.push_back(input);
    }
    cout << maxCard(0, 3, 0) << endl;
}
profile
ㄷㄷㄷㅈ

0개의 댓글