본문 바로가기
Programming/C++ - 백준

[백준] 2798번 : 블랙잭 (C++)

by 지구코드 2024. 3. 10.
반응형


문제


풀이

이 문제를 풀기 위해 브루트포스(Brute-force Search)를 사용했다.

브루트포스는 '무식한 힘'이라는 뜻으로, 완전 탐색 알고리즘을 이용한다.

즉, 모든 경우의 수를 파악해 답을 도출하는 방식이다.

 

아래처럼 삼중 for문을 이용해 결과를 도출했다.

	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 && sum <= M) {
					max = sum;
				}
			}
		}
	}

 

 추가로, '이것이 C++이다'라는 책을 통해 문법을 공부 중인데, 아래와 같은 코드가 C++의 특징을 살린 코드라고 하여 앞으로는 이렇게 짜보려고 한다.

int a = 10;  // C 문법 형식의 코드
int b = a;

int a(10);	// C++ 특징을 살린 코드
int b(a);

 


코드

#include <iostream>
using namespace std;

int main() {
	int N, M, sum(-1), max(-1);
	int arr[101];
	
	cin >> N >> M;

	for (int i = 0; i < N; i++) {
		cin >> arr[i];
	}

	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 && sum <= M) {
					max = sum;
				}
			}
		}
	}

	cout << max;
	return 0;
}

결과

 
반응형

댓글