열심히 코딩 하숭!

[알고리즘][정렬] 10814번 나이순 정렬 | baekjoon 문제 풀이 본문

코딩테스트/알고리즘

[알고리즘][정렬] 10814번 나이순 정렬 | baekjoon 문제 풀이

채숭이 2023. 4. 3. 10:30

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

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

 

풀이

C++의 배열 정렬 함수 sort를 이용하고, compare 함수를 선언해서 문제에 맞는 조건을 적용시켜줬다.

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

bool compare(const pair<int, pair<int, string>> &a, const pair<int, pair<int, string>>& b) {
	if (a.second.first == b.second.first) {
		return a.first < b.first;
	}
	return a.second.first < b.second.first;
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

	int N; cin >> N;

	pair<int, pair<int, string>>* p = new pair<int, pair<int, string>>[N];

	int age;
	string name;

	for (int i = 0; i < N; i++) {
		cin >> age >> name;
		p[i] = { i, {age, name} };
	}

	sort(p, p + N, compare);

	for (int i = 0; i < N; i++) {
		cout << p[i].second.first << ' ' << p[i].second.second << '\n';
	}
}