https://www.acmicpc.net/problem/5635
<코드>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <tuple>
#include <utility>
using namespace std;
bool cmp(tuple<string,int,int,int>&v1,tuple<string,int,int,int>&v2)
{
if(get<3>(v1)==get<3>(v2))
{
if(get<2>(v1)==get<2>(v2)) return get<1>(v1)>get<1>(v2);
else return get<2>(v1)>get<2>(v2);
}
else return get<3>(v1)>get<3>(v2);
}
int main()
{
int n;
cin>>n;
vector<tuple<string,int,int,int>>v;
int year,day,month;
for(int i=0;i<n;i++)
{
string str;
cin>>str>>year>>day>>month;
v.push_back(make_tuple(str,year,day,month));
}
sort(v.begin(),v.end(),cmp);
cout<<get<0>(v[0])<<'\n';
cout<<get<0>(v[n-1])<<'\n';
}
<풀이과정>
3쌍의 이상의 원소값을 저장하기 위해 tuple을 사용했다.
첫번째로 네 번째 원소(생년월일)을 비교하고 그 다음, 세 번째 원소(달)를 비교하고, 두 번째 원소(일)을 비교해서 더 큰 값(내림차순) 반환하는 함수(cmp)를 작성하였고, tuple에서 첫 번째 원소가 이름이므로 가장 나이가 적은 사람(년도가 높을수록 나이가 적다)의 성함과 가장 나이가 많은 사람을 출력한다.
'PS > 정렬 알고리즘[Sort]' 카테고리의 다른 글
백준 20291 파일 정리(c++) (0) | 2022.07.12 |
---|---|
백준 1374 강의실(c++) (1) | 2022.07.11 |
백준 10989 수 정렬하기 3(c++) (1) | 2022.07.07 |
백준 2075 N번째 큰 수 (1) | 2022.07.07 |
백준 10867 중복 빼고 정렬하기(c++) (0) | 2022.07.06 |