Study hard
(c++)백준 10825번: 국영수 본문
https://www.acmicpc.net/problem/10825
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
[풀이]
C++ STL의 sort함수를 이용하여 해결할 수 있다.
문제의 조건에 맞는 사용자 함수를 만들어 sort의 세 번째 인수로 넣어야 한다.
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>//sort
using namespace std;
struct Score {
string name;
int Kor, Eng, Math;
};
int N;
vector<Score>v;//학생 점수 정보 저장
bool sortScore(Score &A, Score &B) {
if (A.Kor == B.Kor) {
if (A.Eng == B.Eng) {
if (A.Math == B.Math) {
return A.name < B.name;
}
return A.Math > B.Math;
}
return A.Eng < B.Eng;
}
return A.Kor > B.Kor;
}
void input() {
string name;
int K, E, M;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> name >> K >> E >> M;
v.push_back({ name,K,E,M });
}
}
void solution() {
input();
sort(v.begin(), v.end(), sortScore);
for (int i = 0; i < N; i++) {
cout << v[i].name << '\n';
}
}
int main() {
solution();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 11652번: 카드 (0) | 2020.06.11 |
---|---|
(c++)백준 10989번: 수 정렬하기 3 (0) | 2020.06.11 |
(c++)백준 10814번: 나이순 정렬 (0) | 2020.06.11 |
(c++)백준 11651번: 좌표 정렬하기 2 (0) | 2020.06.11 |
(c++)백준 11650번: 좌표 정렬하기 (0) | 2020.06.11 |