공부/백준(C++) - 2022~

백준 2798번: 블랙잭 [C++]

상연 2022. 1. 25. 20:09

목차

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

코드

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

int sum_triple(vector<int> v, int index)
{
	return v[index] + v[index+1] + v[index+2];
}


int main()
{
	int n, m, answer = -1;
	vector<int> cards;
	cin >> n >> m;
	
	for(int i=0; i<n; i++)
	{
		int temp;
		cin >> temp;
		cards.push_back(temp);
	}
	//solve
	for(int i = 0; i < n - 2; i++)
	{
		for(int j = i+1; j < n - 1; j++)
		{
			for(int k = j+1; k < n; k++)
			{
				int sum = cards[i] + cards[j] + cards[k];
				if(sum <= m && sum > answer)
				{
					answer = sum;
				}
			}
		}
	}
	cout << answer;
}

설명

브루트포스 문제는 크게 설명할게 없다.

모든 경우의 수를 다 검사해서 결과를 도출한다는 방식으로 접근하면 되기때문이다.

주어진 카드 N개를 3개씩 조합하는 모든 경우의 수를 검사해서 가장 M 이하에 근사한 값을 도출하면 된다.

'공부 > 백준(C++) - 2022~' 카테고리의 다른 글

백준 7568번: 덩치 [C++]  (0) 2022.01.25
백준 2231번: 분해합 [C++]  (0) 2022.01.25
백준 1002번: 터렛 [C++]  (0) 2022.01.23
백준 2447번: 별 찍기-10 [C++]  (0) 2022.01.23
백준 10870번: 피보나치 수 5 [C++]  (0) 2022.01.23