반응형
리뷰
map을 처음으로 사용해 보았다. 파이썬 딕셔너리가 훨 편하다..
문제 풀이
- 각 점수와 인덱스를 저장하기 위해 map을 통해 점수는 key로 인덱스는 value로 받아왔다.
- 벡터에는 값만 저장 후 내림차순으로 정렬하여 상위 5개 점수의 합을 구해주었다.
- 인덱스를 나타낼 벡터를 새로 초기화 하고 상위 5개 점수를 키로 갖는 인덱스를 해당 벡터에 추가해 주었다.
- 상위 5개 점수의 합 출력 인덱스 벡터를 오름차순으로 정렬 후 상위 5개의 인덱스 출력
참고 사항
모든 문제에 대한 점수는 서로 다르기에 점수를 map의 key값으로 받아도 괜찮다.
정답 코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <numeric>
using namespace std;
int main() {
map<int, int> dic;
vector<int> lst;
int a;
for (int i = 1; i < 9; i++) {
cin >> a;
lst.push_back(a);
dic[a] = i;
}
sort(lst.begin(), lst.end(), greater<int>());
int sum = accumulate(lst.begin(), lst.begin() + 5, 0);
vector<int> index;
for (int i = 0; i < 5; i++) {
index.push_back(dic[lst[i]]);
}
sort(index.begin(), index.end());
cout << sum << "\n";
for (int i = 0; i < 5; i++) {
cout << index[i] << " ";
}
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 28702번 FizzBuzz C++ (2) | 2024.07.16 |
---|---|
백준 30802번 웰컴 키트 C++ (1) | 2024.07.15 |
백준 5054번 주차의 신 C++ (0) | 2024.07.15 |
백준 1292번 쉽게 푸는 문제 C++ (0) | 2024.07.14 |
백준 2953번 나는 요리사다 C++ (0) | 2024.07.14 |