알고리즘 공부/C++

백준 2822번 점수 계산 C++

마달랭 2024. 7. 15. 00:29
반응형

리뷰

map을 처음으로 사용해 보았다. 파이썬 딕셔너리가 훨 편하다..

 

문제 풀이

  1. 각 점수와 인덱스를 저장하기 위해 map을 통해 점수는 key로 인덱스는 value로 받아왔다.
  2. 벡터에는 값만 저장 후 내림차순으로 정렬하여 상위 5개 점수의 합을 구해주었다.
  3. 인덱스를 나타낼 벡터를 새로 초기화 하고 상위 5개 점수를 키로 갖는 인덱스를 해당 벡터에 추가해 주었다.
  4. 상위 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