반응형
출처: https://www.acmicpc.net/problem/2798
Input
5 21
5 6 7 8 9
Output
21
▶ 6 + 7 + 8 = 21
N이 크지 않은 숫자이므로 NC3으로 모든 경우의 수에 대한 최적의 해를 구합니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
int result;
vector<int> v;
// 조합
void DFS(int idx, int cnt, int sum){
// 3장의 카드 선택되어, 합이 M이하인 경우
if (cnt == 3 && sum <= M){
result = result < sum ? sum : result;
return;
}
// 선택할 카드가 없거나
if (idx >= N || cnt > 3 || sum > M)
return;
// 해당 카드 선택한 경우
DFS(idx + 1, cnt + 1, sum + v[idx]);
// 해당 카드 선택하지 않은 경우
DFS(idx + 1, cnt, sum);
}
int main(void){
cin >> N >> M;
v.resize(N);
for (int i = 0; i < N; i++){
cin >> v[i];
}
DFS(0, 0, 0);
cout << result << endl;
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 12813 이진수 연산 (0) | 2021.02.28 |
---|---|
[BOJ] 백준 1436 영화감독 숌 (0) | 2021.02.28 |
[BOJ] 백준 15596 정수 N개의 합 (0) | 2021.02.28 |
[BOJ] 백준 1182 부분수열의 합 (0) | 2021.02.28 |
[BOJ] 백준 1952 달팽이2 (0) | 2021.02.28 |
댓글