코딩테스트 연습/Baekjoon
[Baekjoon] 10814번: 나이순 정렬 (c++)
수기
2022. 4. 12. 20:33
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
1. 2차원 벡터 member 안에 나이, 이름, 입력순서를 순서대로 저장한다.
2. member를 정렬한다.
- 나이가 더 작은 순서대로 앞에 세운다 a[1] < b[1]
- 나이가 같은 경우 입력순서가 더 빠른것부터 세운다 if(a[1] == b[1]) return a[2] < b[2]
* member는 string 배열 이므로, 나이와 인덱스를 숫자로 비교하기위해 stoi 로 감싸줘야 함
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
bool comp(vector<string> a, vector<string> b){
if(stoi(a[1]) == stoi(b[1])){
return stoi(a[2]) < stoi(b[2]);
}else return stoi(a[1]) < stoi(b[1]);
}
int main(){
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int N;
int age;
string name;
cin >> N;
vector<vector<string>> member(N, vector<string>(3));
for(int i=0;i<N;i++){
cin >> age >> name;
member[i][0] = name;
member[i][1] = to_string(age);
member[i][2] = to_string(i);
}
sort(member.begin(), member.end(), comp);
for(int i=0;i<N;i++){
cout << member[i][1] << " " << member[i][0] << "\n";
}
return 0;
}