반응형
[문제 풀이]
- 입력된 정보 저장
- 각 실력별 정렬한 뒤 조합을 통해서 최대 실력 합 탐색
- 탐색을 통해 얻은 실력의 최대 합 결과로 출력
[코드]
- 조합을 통해서 최대 실력 합 탐색
void solve(int sum, int idx) {
if(idx == 5){
answer = max(answer, sum);
return;
}
for(int i=0; i<5; i++){
pair<int, int> p = vc[idx][i];
if(!visit[p.second]){
visit[p.second] = 1;
solve(sum + p.first, idx+1);
visit[p.second] = 0;
}
}
}
[전체 코드]
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
vector<pair<int, int> > vc[5];
int visit[20001] = {0, }, answer = 0;
void solve(int sum, int idx) {
if(idx == 5){
answer = max(answer, sum);
return;
}
for(int i=0; i<5; i++){
pair<int, int> p = vc[idx][i];
if(!visit[p.second]){
visit[p.second] = 1;
solve(sum + p.first, idx+1);
visit[p.second] = 0;
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, tmp;
cin>>N;
for(int n=0; n<N; n++){
for(int i=0; i<5; i++){
cin>>tmp;
vc[i].push_back(make_pair(tmp, n));
}
}
for(int i=0; i<5; i++){
sort(vc[i].begin(), vc[i].end(), greater<pair<int, int> >());
}
solve(0, 0);
cout<<answer<<"\n";
return 0;
}
https://www.acmicpc.net/problem/17240

반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
| [ 백준 20114 ] 미아 노트 (C++) (0) | 2025.04.10 |
|---|---|
| [ 백준 9037 ] The candy war (C++) (0) | 2025.03.22 |
| [ 백준 10994 ] 별 찍기 - 19 (C++) (0) | 2025.02.23 |
| [ 백준 2503 ] 숫자 야구 (C++) (0) | 2025.02.15 |
| [ 백준 1431 ] 시리얼 번호 (C++) (0) | 2025.02.10 |