본문 바로가기

알고리즘/BOJ

[C++] 백준 10825번 - 국영수


0. 문제

 

https://www.acmicpc.net/problem/10825

 

1. 아이디어

 

1) 기존 정렬 문제에서 정렬 기준의 개수만 늘어났을 뿐이다.

 

2. 소스코드

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <tuple>
using namespace std;
bool compare(tuple<string, int, int, int> t1, tuple<string, int, int, int> t2)
{
	if (get<1>(t1) != get<1>(t2))
		return get<1>(t1) > get<1>(t2);
	else
	{
		if (get<2>(t1) != get<2>(t2))
			return get<2>(t1) < get<2>(t2);
		else
		{
			if (get<3>(t1) != get<3>(t2))
				return get<3>(t1) > get<3>(t2);
			else
				return get<0>(t1) < get<0>(t2);
		}
	}
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int N;
	cin >> N;

	vector<tuple<string, int, int, int>> v;

	for (int i = 0; i < N; i++)
	{
		string name;
		int kor, eng, math;
		cin >> name >> kor >> eng >> math;
		v.push_back(make_tuple(name, kor, eng, math));
	}
	sort(v.begin(), v.end(),compare);

	for (int i = 0; i < N; i++)
		cout << get<0>(v[i]) << '\n';
}

 

3. 결과

 

 

4. 피드백

 

  • 야호!!