상세 컨텐츠

본문 제목

백준 2798번 블랙잭 C++

공부/C & C++

by E루기 2020. 12. 11. 15:17

본문

www.acmicpc.net/problem/2798

기본적인 브루트 포스 문제이다.

#include <stdio.h>
#include <iostream>
using namespace std;

int card[105], picked[4], res = -1, m, card_num;

void doRecur(int idx, int pos) { 	

	if (pos == 3) {
		int sum = 0;
		for (int i = 0; i < 3; i++) {
			sum += picked[i];
		}
		if (sum > res && sum <= m) res = sum;
		return;
	}

	for (int i = idx; i < card_num; i++) {
		picked[pos] = card[i];
		doRecur(i + 1, pos + 1);
	}

	return;
}

int main() {
	cin >> card_num >> m;
	for (int i = 0; i < card_num; i++) cin >> card[i];
	doRecur(0, 0);
	cout << res << endl;
	return 0;
}

 

card에 겹치는 수 처리를 해볼까 생각해봤지만 sort함수를 이용하여 겹치는 것을 찾는 것이 오히려 더 시간이 걸릴 것 같아서 그냥 그대로 했다.

'공부 > C & C++' 카테고리의 다른 글

백준 14888번 연산자 끼워넣기 C/C++  (0) 2020.12.19
백준 14502번 연구소 C  (0) 2020.12.15
백준 1436번 영화감독 숌 C++  (0) 2020.12.12
백준 7568번 덩치 C++  (0) 2020.12.11
백준 2231번 분해합 C++  (0) 2020.12.11

관련글 더보기

댓글 영역