728x90
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Student{
string name;
int korScore;
int matScore;
int engScore;
};
bool cmp(Student a, Student b) {
if (a.korScore == b.korScore && a.engScore == b.engScore && a.matScore == b.matScore) return a.name < b.name;
if (a.korScore == b.korScore && a.engScore == b.engScore) return a.matScore > b.matScore;
if (a.korScore == b.korScore) return a.engScore < b.engScore;
return a.korScore > b.korScore;
}
int main()
{
int N;
cin >> N;
Student student[N];
for (int i = 0; i < N; i++)
{
cin >> student[i].name >> student[i].korScore
>> student[i].engScore >> student[i].matScore;
}
sort(student, student + N, cmp);
for(int i = 0; i < N; i++)
{
cout << student[i].name << '\n';
}
}
조건을 똑바로 세울것
구조체 만들고, 배열로 만든것까진 잘했지만
왜 배열로 만들어야 하는지 이유를 명확히 할 필요가 있다.
또한 sort를 여러번 하는것으로도 시간초과가 날 수 있으니 한번에 해결하도록 하는것이 중요
문제의 조건을 그대로 구현하는 것이 중요하다.
그리고 endl를 쓰면 시간초과가 발생하니 주의할것
728x90