본문 바로가기
코딩테스트_백준풀이

블랙잭 #2798 c++ 풀이

by wanna_dev 2023. 10. 12.

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

 

2798번: 블랙잭

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

www.acmicpc.net

1. 조건에 따라 계산하면 브루트 포스로 해도 시간안에 해결할 수 있을 것이라고 생각

100C3 의 경우의 수는 1초 미만이기 때문

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>

using namespace std;





int list[101];
bool checklist[101];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int N,M;
	int temp;
	queue <int> q;
	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		cin >> list[i];
	}
	
	
	// 수를 3개를 선택해서 더했을때 M과 가장 가까운 수를 찾아서 리턴
	// M보다는 더해진 수가 크지 않음
	// 시간제한 1초 = 1억번 연산
	//모든 수를 3개씩 더해서 수를 저장한다.
	vector <int> slist;


	int sum = 0;
	int min = 987654321;
	int ans;
	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 = list[i] + list[j] + list[k];
				if (M - sum < min && M - sum >= 0) {
					min = M - sum;
					ans = sum;
				}
			}
	cout << ans;
	return 0;
}

'코딩테스트_백준풀이' 카테고리의 다른 글

나이순 정렬 #10814 c++ 풀이  (0) 2023.10.12
괄호 #9012 c++ 풀이  (0) 2023.10.12
카드2 #2164 c++ 풀이  (0) 2023.10.12
통계학 #2108 c++ 풀이  (1) 2023.10.12
수 정렬하기3 #10989 c++ 풀이  (1) 2023.10.10