[문제 위치]
https://www.acmicpc.net/status?from_mine=1&problem_id=2822&user_id=unlock546
[문제 풀이]
이 코드는 총 8개의 문제 점수 중 상위 5개의 점수를 선택하여 그 합계를 계산하고, 해당 점수에 대응하는 문제 번호를 오름차순으로 출력하는 기능을 수행한다.
입력된 점수는 각 문제 번호와 함께 pair 형태로 벡터에 저장된다. 이후 점수를 기준으로 내림차순 정렬을 수행하고, 상위 5개의 점수를 선택하여 합계를 구한다. 이때 선택된 문제 번호는 별도로 저장되며, 최종적으로 오름차순 정렬을 거쳐 출력된다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
ios_base::sync_with_stdio(0);
cin.tie(0);
int main(void)
{
vector<pair<int, int>> v(8); //{score, idx}
for (int i = 0; i < 8; i++)
{
cin >> v[i].first;
v[i].second = i + 1;
}
//내림차순 정렬
sort(v.begin(), v.end(), greater<pair<int, int>>());
int sum = 0;
vector<int> idx; //몇 번째 문제?
for (int i = 0; i < 5; i++)
{
sum += v[i].first;
idx.push_back(v[i].second);
}
cout << sum << "\n";
//문제는 오름차순 정렬
sort(idx.begin(), idx.end());
for (int i = 0; i < idx.size(); i++)
cout << idx[i] << " ";
cout << "\n";
return 0;
}
'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글
[Gold V] 공주님을 구해라! - 17836 (0) | 2025.07.14 |
---|---|
[Silver V] 투자의 구재 배주형 - 19947 (1) | 2025.07.12 |
[Bronze I] 이항 계수 - 11050 (4) | 2025.07.09 |
[Gold IV] 트리 - 4083 (1) | 2025.07.09 |
[Gold III] 방 번호 - 1082 (1) | 2025.07.09 |