반응형
출처: https://www.acmicpc.net/problem/2822
Input
20
30
50
48
33
66
0
64
Output
261
3 4 5 6 8
▶ vector와 sort() 이용
① 점수를 기준으로 내림차순 정렬하여 고득점 5개를 구합니다.
② 고득점 5문제를 문제번호 기준으로 내림차순 정렬.
※ vector 원소를 pair로 구현하거나 구조체로 구현 가능.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// {점수, 문제 번호}
vector<pair<int, int>> problemList(8);
int main() {
for (int i = 0; i < 8; i++){
cin >> problemList[i].first;
problemList[i].second = i + 1;
}
// 점수를 기준으로 내림차순 정렬
sort(problemList.begin(), problemList.end(), greater<pair<int, int>>());
int sum = 0;
vector<int> problemID;
// 고득점 상위 5개
for (int i = 0; i < 5; i++){
sum += problemList[i].first;
problemID.push_back(problemList[i].second);
}
// 문제 번호 오름차순 정렬
sort(problemID.begin(), problemID.end());
cout << sum << "\n";
for (int i = 0; i < problemID.size(); i++)
cout << problemID[i] << " ";
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 6987 월드컵 (1) | 2021.02.25 |
---|---|
[BOJ] 백준 2935 소음 (0) | 2021.02.25 |
[BOJ] 백준 14225 부분수열의 합 (0) | 2021.02.25 |
[BOJ] 백준 10815 숫자 카드 (0) | 2021.02.25 |
[BOJ] 백준 1158 요세푸스 문제 (0) | 2021.02.25 |
댓글