이번 문제는 백준 10814 나이순 정렬 C++ 멀티맵 입니다.
풀이는 두가지 방법이 있습니다.
이코드는 2번째 방법으로 작성되었습니다.
1. 데이터를 받아 정렬하여 출력
정렬을 하실때에는 반드시 순서가 유지되는 정렬인지 확인을 하셔야 합니다.
정렬에는 순서가 유지되는 정렬과 안되는 정렬이 있습니다.
2. 멀티맵을 사용하기
멀티맵 자세한 사용법은 구글 검색을 참고하세요. map,set,multimap,unordered set 정도는 알아두시면 편합니다.
여기서는 간단하게 예시를 들어 설명하겠습니다.
1 ab 삽입
multimap- 1 - ab
1 dc 삽입
multimap- 1 - ab - dc
3 ef 삽입
multimap- 1 - ab - dc 3 - ef
이런식으로 저장이 되며
벡터처럼 [] 을 통해 접근도 가능하지만 iterator, auto 를 이용해 순차적으로 접근이 가능합니다.
#include <string>
#include <iostream>
#include <map>
using namespace std;
int main() {
int N;
multimap <int, string> mm;
int n;
string temp;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> n >> temp;
mm.insert(make_pair(n, temp));
}
for (auto a = mm.begin(); a != mm.end(); a++) {
cout << a->first << " " << a->second << "\n";
// cout << endl <= 하면 시간 초과납니다.
}
return 0;
}