반응형

문제출처

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


문제풀이

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 1. endl 쓰지 않기
 * 2. sort와 stable_sort의 차이
 * endl은 개행문자를 출력할 뿐만 아니라 출력 버퍼를 비우는 역할까지 합니다. 그래서 출력한 뒤
 * 바로 보이게 할 수 있는데 이 버퍼를 비우는 작업이 매우 느립니다. 때문에 endl 대신 "\n"을 쓰는 것으로도
 * 시간향상이 굉장히 많이 나므로 최대한 endl을 사용하지 않는것이 좋습니다.
 * sort = 컨테이너 정렬이 필요할 때 (quick sort)
 * stable_sort = 순서가 유지되어야 할 경우 (merge sort, insertion sort)
 * 시간은 sort < stable_sort 이며 이 문제의 핵심은 나이가 같은 경우
 * 가입한 순서를 유지한 채로 정렬하는 것이기 때문에 stable_sort를 사용해야 한다.
 * STL pair의 정렬은 기본적으로 first를 기준으로 정렬이 되고 first가 같을 경우 second를 사용해서 비교를 하게 된다.
 */
cs


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(const pair<intstring> &a, const pair<intstring> &b) {
    return a.first<b.first;
}
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n; cin>>n;
    vector<pair<intstring> > member(n);
    for(int i=0; i<n; i++cin>>member[i].first>>member[i].second;
    stable_sort(member.begin(), member.end(), comp);
    for(int i=0; i<n; i++cout<<member[i].first<<" "<<member[i].second<<"\n";
    return 0;
}
cs


반응형

'Algorithm' 카테고리의 다른 글

[BOJ 1937] 욕심쟁이 판다  (0) 2019.02.15
[BOJ 10989] 수정렬하기3  (0) 2019.02.15
[BOJ 1026] 보물  (0) 2019.02.12
[BOJ 3056] 007  (0) 2019.01.31
[BOJ 1102] 발전소  (0) 2019.01.30

+ Recent posts