알고리즘 스터디 (나이순 정렬[백준 10814])

박윤택·2022년 8월 2일
1

알고리즘

목록 보기
25/25

문제

나이순 정렬 - 실버 5


문제 이해

  • 정렬 순서 : 나이순(1), 들어온 순서(2)

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 오름차순대로, 들어온 순서대로 가입한 사람들을 출력할 수 있다.


0개의 댓글