HyeM

[백준 2798]블랙잭_C++ 본문

Programming/Algorithm

[백준 2798]블랙잭_C++

Hailey_HyeM207 2020. 11. 10. 13:27

브루트 포스 문제 

 

문제

 

입출력
입출력 예제

 

★ N장의 카드 중 3장을 뽑아, 그 합이 M을 넘지 않고최대한 M에 가까운 숫자 합 구하기

★ 구현 :

  3중 for문을 돌려, 모든 경우의 수를 찾았다.

 ㄴ for문 돌릴 때, 반복 변수 i, j, k 시작점과 조건등을 잘 설정하자! ( 특히 j , k 시작부분 주의 할 것. 1이 아닌 i+1, j+1이다.)

 

 

c++로 구현함.

코드

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

int main() {
	int n, m;
	cin >> n >> m;
	
	vector<int> v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	
	int hap = 0;
	int gap = 400000;  // 가장작은 gap저장 _비교를 위해 가장 큰 갭차이를 초기값으로 설정
	int dap = 0; //출력할 답(3장의 합)
	
	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++) {
				hap = v[i] + v[j] + v[k];
				//cout << "i : " << v[i] << " j : " << v[j] << " k : " << v[k] <<"hap  :" <<  hap << endl;
				if (m -hap>= 0 && m - hap < gap  ) {
					gap =m-hap;
					dap = hap;
				}
			}
		}
	}
	cout << dap;

}

 

'Programming > Algorithm' 카테고리의 다른 글

[백준2847]게임을 만든 동준이_C++  (0) 2020.11.12
[백준2828]사과담기게임_C++  (0) 2020.11.10
[백준 3085]사탕게임_C++  (0) 2020.11.10
[백준 1439]뒤집기_C++  (0) 2020.11.10
Comments