새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 점수 계산 (2822번)

  • -
https://www.acmicpc.net/problem/2822
 

2822번: 점수 계산

8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문

www.acmicpc.net

🔔 문제 : 

(0<= N <= 150)인 8개의 점수 N이 입력으로 주어집니다.

 

그중 가장 큰 점수 5개의 합과, 그 점수들의 순서를 오름차순 순으로 출력하는 문제입니다.


🔔 Kick Point :

 

저는 pair과, sort를 이용을 하였는데, 좀 복잡하게 짜인 것 같네요

 

pair을 이용하여 각각의 점수에 (점수,인덱스)를 입력값을 받습니다.

 

sort 알고리즘을 이용하여, 점수별로 정렬 후, 가장 큰 5개의 점수 합을 담아둡니다.

 

이후, 큰 점수들의 인덱스를 정렬해줍니다.

 

그 다음 점수 합, 인덱스 오름차순으로 출력해주었습니다.

 


🔔 Code :

#include <iostream>
#include <algorithm>
using namespace std;

bool compare(const pair<int, int>& a, const pair<int, int>& b) {
	return a.second < b.second;
}

int main() {
	pair<int, int> p[9];
	for (int i = 1; i <= 8; i++) {
		cin >> p[i].first;
		p[i].second = i;
	}
	sort(p + 1, p + 9);

	int total(0);
	for (int i = 4; i <= 8; i++) {
		total += p[i].first;
	}
	cout << total << endl;

	sort(p + 4, p + 9, compare);
	for (int i = 4; i <= 8; i++) {
		cout << p[i].second << " ";
	}
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.