컴굥일지

[BOJ/백준 2798][C++] 블랙잭 본문

알고리즘/코테 문제

[BOJ/백준 2798][C++] 블랙잭

gyong 2022. 2. 23. 20:05
반응형

문제

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

 

문제 내용

카드 n개를 입력받아 3장을 뽑는다.
뽑은 카드를 다 합했을 때, m보다는 작거나 같으면서 만들 수 있는 최대의 값을 만들면 된다.

 

문제 풀이

완전 탐색으로 문제를 풀면 된다.

3장의 합이 m보다 작을 때, mmax의 값을 계속 갱신해가면서 확인하면 된다.

 

코드

#include <iostream>
#include <algorithm>
#include <vector> 

using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	//입력
	int n, m;
	cin >> n >> m;
	vector<int>arr(n);
	for (int i = 0; i < n; i++) cin >> arr[i];


	//문제 해결
	int sum = 0, mmax = 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 (sum <= m) {
					mmax = max(mmax, sum);
				}
			}
		}
	}
	
	//결과 출력
	cout << mmax << '\n';
}

 

 

반응형
Comments