[BOJ] 2798 : 블랙잭
Level 10 부터는 한 문제씩 포스팅 할생각이다.
(이전단계에 어려웠던 것들도 재 포스팅 할 예정이다)
Question
Solution
- 주어진 카드를 vector에 저장한다
- 그중 3장을 뽑아 더한다, 모든 경우의 수를 차례로 확인한다
- 제시된 숫자와 가장 근접한 합을 찾아 출력한다
Cord
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int answer = 0;
// 입력
int cards, target;
cin >> cards >> target;
// 주어진 카드들을 vector에 순서대로 저장
vector<int> vCards(cards);
for (int idx = 0; idx < cards; idx++)
{
cin >> vCards[idx];
}
// 세 장의 카드 뽑기
for (int i = 0; i < cards - 2; i++)
{
for (int j = i + 1; j < cards - 1; j++)
{
for (int k = j + 1; k < cards; k++)
{
int sum = vCards[i] + vCards[j] + vCards[k];
// 가장 근접한 세 장의 합 찾기
if (sum > answer && sum <= target)
{
answer = sum;
}
}
}
}
// 출력
cout << answer;
return 0;
}