https://www.acmicpc.net/problem/10825
이름, 국어, 영어, 수학 점수가 다 묶여야 하므로 구조체를 써야한다는 생각이 들었다.
그리고 sort 함수를 사용할 때 compare함수를 새로 구현해서 인자로 넣어주면 된다라는 생각이 들었다
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
struct student {
string name;
int korean, english, math;
};
bool comp(const student& s1, const student& s2)
{
if (s1.korean == s2.korean && s1.english == s2.english && s1.math == s2.math)
{
return s1.name < s2.name;
}
if (s1.korean == s2.korean && s1.english == s2.english)
{
return s1.math > s2.math;
}
if (s1.korean == s2.korean)
{
return s1.english < s2.english;
}
return s1.korean > s2.korean;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
vector<student> v(n);
student st;
for (int i = 0; i < n; i++)
{
cin >> st.name >> st.korean >> st.english >> st.math;
v[i] = st;
}
sort(v.begin(), v.end(), comp);
for (auto& i : v)
{
cout << i.name << '\n';
}
return 0;
}
'백준 문제풀이 > 실버4' 카테고리의 다른 글
백준 1764번 - 듣보잡 (0) | 2022.06.08 |
---|---|
백준 1302 - 베스트셀러 (0) | 2022.05.08 |
백준 1205번 - 등수 구하기 (0) | 2022.03.17 |
백준 1812번 - 사탕 (0) | 2022.03.17 |
백준 1543번 - 문서 검색 (0) | 2022.03.17 |