[boj][c++] 2798 블랙잭

ppparkta·2022년 6월 10일
0

Problem solving

목록 보기
3/65

2798 블랙잭


브론즈 문제인데 체감 난이도는 좀 더 높았다. 다른 문제긴 한데 라피신 할 때 풀었던 문제에서 영감을 받아서 비슷한 방식으로 풀었다.

삼중반복문 사용해서 서로 다른 세개의 카드를 더한 모든 경우의 수를 찾고 그 중 조건에 맞을 때 min값을 변경했다. min값이 변경될 때마다 정답이 바뀌고 가장 min값이 작을 때(혹은 0일 때)의 정답을 출력하도록 했다.

42 동기들끼리 모였을 때 라피신 문제들 난이도가 백준 몇티어 정도 되는지 얘기했었는데 며칠을 애먹어가며 푼 문제가 골드~플레티넘 정도 됐었다. 동기들 없이 혼자 공부하는 요즘은 실버1~2 문제만 혼자 해결해도 자랑스러워서 어깨가 막 올라간다ㅎㅎ... 새삼 동료학습이 대단했음을 느낀다.

#include	<iostream>
using namespace std;

int main()
{
	int n, sum, max, min, ans;
	int arr[101];
	min = 300001;
	cin >> n >> max;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	sum = 0;
	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++)
			{
				sum = arr[i] + arr[j] + arr[k];
				if (max - sum < min && max - sum >= 0)
				{
					min = max - sum;
					ans = sum;
				}
			}
		}
	}
	cout << ans << endl;
	return 0;
};
profile
겉촉속촉

0개의 댓글