알고리즘/BOJ

백준 2798번 블랙잭

꾸준함. 2018. 9. 18. 02:00

문제 링크입니다: https://www.acmicpc.net/problem/2798


재귀를 이용하여 완전탐색을 해주면 되는 문제였습니다.

기저 사례만 잘 작성해준다면 크게 어려운 점은 없는 것 같습니다.


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

int N, M;

int result;

vector<int> v;

 

void sumOfCards(int idx, int cnt, int sum)

{

        //조건 만족할 경우

        if (cnt == 3 && sum <= M)

        {

                 result = max(result, sum);

                 return;

        }

        //기저 사례

        if (idx >= N || cnt > 3 || sum > M)

                 return;

 

        //해당 카드 선택

        sumOfCards(idx + 1, cnt + 1, sum + v[idx]);

        //해당 카드 선택 X

        sumOfCards(idx + 1, cnt, sum);

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        cin >> N >> M;

 

        v.resize(N);

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

                 cin >> v[i];

 

        sumOfCards(0, 0, 0);

        cout << result << "\n";

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2823번 유턴 싫어  (4) 2018.09.18
백준 2847번 게임을 만드는 동준이  (0) 2018.09.18
백준 1159번 농구 경기  (0) 2018.09.18
백준 11775번 SLON  (4) 2018.09.18
백준 2879번 코딩은 예쁘게  (0) 2018.09.18