sliver__

백준 - 블랙잭(2798) 본문

CS/알고리즘

백준 - 블랙잭(2798)

sliver__ 2021. 11. 19. 23:38
728x90

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

 

2798번: 블랙잭

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

www.acmicpc.net

 

블랙잭

 

숫자의 개수 n, 목표 숫자 m이 주어지고

n개의 숫자 중 3개의 숫자를 선택해 m에 가까운 숫자를 만드는 문제이다.

n이 1부터 100까지 이므로 \(100^3\) = 1000000이므로 완전탐색이 가능하다

아래는 제출한 코드입니다.

 

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

int main()
{
	int n, m, val, temp,sum,res,min = INT_MAX;
	cin >> n >> m;
	vector<int> v;
	for (int i = 0; i < n; ++i)
	{
		cin >> val;
		v.push_back(val);
	}
	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 = v[i] + v[j] + v[k];
				if (sum > m) continue;
				temp = sum - m;
				if (temp < 0) temp *= -1;
				if (min > temp)
				{
					min = temp;
					res = sum;
				}
			}
		}
	}

	cout << res << endl;
}
728x90

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

[프로그래머스] - 완주하지 못한 선수  (0) 2021.12.07
백준 - 분해합(2231)  (0) 2021.11.19
백준 - 피보나치 수 5  (0) 2021.11.18
백준 - 팩토리얼(10872)  (0) 2021.11.18
백준 - 택시기하학(3053)  (0) 2021.11.18
Comments