본문 바로가기
개인 공부/코딩테스트

[C++] 백준 10814번 나이순 정렬 :: seoftware

by seowit 2020. 3. 13.

문제

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

소스코드

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

bool compare(pair<int, string> a, pair<int, string> b) {
	if (a.first < b.first) return true;
	else return false;
}

int main(void) {
	int N; cin >> N;
	vector<pair<int, string>> members(N);

	for (int i = 0; i < N; i++) { 
		cin >> members[i].first >> members[i].second;
	}

	stable_sort(members.begin(), members.end(), compare);

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

설명

- bool compare 함수와 stable_sort를 사용하는 것이 중요! stable_sort의 sort와의 차이점은 입력받은 순서를 유지한다는 점이다. 또한 pair가 파라미터로 전달 될 수 있다는 점..!

- 출력을 하는 for문에서 '\n' 대신에 endl 을 쓰면 시간초과가 났다. 

댓글