Map
을 사용하여 key, value 쌍으로 데이터를 저장하고 출력한다.
import java.io.*;
import java.util.*;
public class Baekjoon_10814 {
static Map<Integer, List<String>> map;
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
map = new HashMap<>();
N = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int key = Integer.parseInt(st.nextToken());
String value = st.nextToken();
if (map.containsKey(key)) {
List<String> values = map.get(key);
values.add(value);
map.put(key, values);
} else {
List<String> values = new ArrayList<>();
values.add(value);
map.put(key, values);
}
}
for (Integer key : map.keySet()) {
for (String value : map.get(key)) {
System.out.println(key + " " + value);
}
}
}
}
처음에 PriorityQueue를 사용하여 정렬을 하려고 시도하였다. class를 만들어서 Comparable
을 implements 받아 compareTo 메서드를 작성하는 구조를 생각하고 테스트 하였는데 나이순서대로는 나오지만 들어온 순서대로는 출력이 되지 않았었다.
Map에 key로 age를 설정하고 value에 List를 이용하여 들어온 순서를 유지하도록 하였다. 이를 통해 age 오름차순대로, 들어온 순서대로 가입한 사람들을 출력할 수 있다.