https://www.acmicpc.net/problem/10825
풀이법
1) C++의 강점인 STL과 algorithm 헤더 내의 sort 함수를 이용하면 풀 수 있는 문제이다.
2) 조건을 compare 라는 bool type의 함수를 만들고 설정하는 과정이 가장 중요하다.
3) 팁을 적어 보자면 감소(내림차순: >) / 증가(오름차순: <)을 활용하면 된다.
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <cstring>
#include <queue>
#include <set>
using namespace std;
int n;
pair<string, pair<int, pair<int, int>>> st;
vector<pair<string, pair<int, pair<int, int>>>> arr;
bool compare(pair<string, pair<int, pair<int, int>>>a, pair<string, pair<int, pair<int, int>>>b)
{
if (a.second.first > b.second.first)
return true;
else if (a.second.first == b.second.first)
{
if (a.second.second.first < b.second.second.first)
return true;
else if (a.second.second.first == b.second.second.first)
{
if (a.second.second.second > b.second.second.second)
return true;
else if (a.second.second.second == b.second.second.second)
{
if (a.first < b.first)
return true;
else
return false;
}
else
return false;
}
else
return false;
}
else
return false;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
string s;
int a, b, c;
cin >> s >> a >> b >> c;
st = { s,{a,{b,c}} };
arr.push_back(st);
}
sort(arr.begin(), arr.end(),compare);
for (int i = 0; i < arr.size(); i++)
{
cout << arr[i].first<<"\n";
}
}
'Coding_Test_C++' 카테고리의 다른 글
BaekJoon 1302번: 베스트셀러 (0) | 2021.06.15 |
---|---|
BaekJoon 16953번: A->B(C++) (0) | 2021.06.13 |
BaekJoon 11123번: 양 한마리... 양 두마리...(C++) (0) | 2021.06.11 |
BaekJoon 2210번: 숫자판 점프 (0) | 2021.06.10 |
BaekJoon 10026번: 적록색약(C++) (0) | 2021.06.07 |