문제 링크: https://www.acmicpc.net/problem/10814
백준 정렬 11단계 - 10814번 나이순 정렬을 풀어보았다.
풀이: 가입순을 신경 써서 풀어야 한다.
파이썬의 경우, lambda에서 조건을 두 개(나이, 가입순)를 써서 정렬했다.
C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(pair<int,pair<int,string>> a,pair<int,pair<int,string>> b)
{
if(a.second.first==b.second.first) return a.first<b.first;
else return a.second.first<b.second.first;
}
int main()
{
int n,age;
string name;
cin>>n;
vector<pair<int,pair<int,string>>> user;
for(int i=0;i<n;i++)
{
cin>>age>>name;
user.push_back(pair<int,pair<int,string>>(i,pair<int,string>(age,name)));
}
sort(user.begin(),user.end(),comp);
for(int i=0;i<n;i++) cout<<user[i].second.first<<" "<<user[i].second.second<<"\n";
}
Python
n=int(input())
user=[]
for i in range(n):
age,name=input().split()
age=int(age)
idx=i # 가입순
user.append([age,name,idx])
user.sort(key=lambda x:(x[0],x[2])) # 나이와 가입순으로 정렬한다
for i in user: print(i[0],i[1])
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
팩토리얼 풀이 (0) | 2023.01.05 |
---|---|
좌표 압축 풀이 (0) | 2023.01.05 |
단어 정렬 풀이 (0) | 2023.01.05 |
좌표 정렬하기 2 풀이 (0) | 2023.01.05 |
좌표 정렬하기 풀이 (0) | 2023.01.04 |