📌 백준 10825 국영수
https://www.acmicpc.net/problem/10825
벡터의 자료형으로 구조체를 사용했다.
국어 점수를 내림차순으로 정렬,
국어 점수가 같으면 영어 점수를 오름차순으로 정렬,
영어 점수가 같으면 수학 점수를 내림차순으로 정렬하는 문제다.
sort()와 비교함수 compare()을 사용해서 문제를 풀었다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
struct student
{
int kor;
int eng;
int math;
string name;
};
//전체 비교
bool compare(const student& now, const student& last)
{
if(now.kor != last.kor) return now.kor > last.kor;
else
{
if(now.eng != last.eng) return now.eng < last.eng;
else
{
if(now.math != last.math) return now.math > last.math;
return now.name < last.name;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin>>N;
vector<student> students(N);
//입력
for(int i=0; i<N; i++)
cin >> students[i].name >> students[i].kor >> students[i].eng >> students[i].math;
//정렬
sort(students.begin(), students.end(), compare);
//출력
//cout<<"answer==\n";
for(int i=0; i<N; i++)
cout << students[i].name<< "\n";
}