반응형
문제출처
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<int, string> &a, const pair<int, string> &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<int, string> > 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 |