본문 바로가기
이론/Data Structure , Algorithm

[210926] 백준 10814번 문제 풀이 / 나이순 정렬

by 6161990 2021. 9. 26.

 

 

문제의 핵心

1. 나이, 이름의 정보를 입력받은 뒤에 나이를 기준으로 정렬한다.
2. 카운팅 정렬을 활용하여 빠르게 정렬한다. 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Q1_10814 {

public static void main(String[] args) throws IOException {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
         StringBuilder sb = new StringBuilder();

         int T = Integer.parseInt(br.readLine());

        // 입력되는 나이의 범위 : 1 ~ 200
        StringBuilder[] p = new StringBuilder[201];

        // 객체 배열의 인덱스에 각 StringBuilder객체를 생성해준다.
        for(int i=0; i< p.length; i++) {
               p[i] = new StringBuilder();
        }


        // 객체 배열의 인덱스에 각 StringBuilder객체를 생성해준다.
        for(int i=0; i<num; i++) {
              StringTokenizer st = new StringTokenizer(br.readLine()," ");
              int age = Integer.parseInt(st.nextToken());
              String name = st.nextToken();
              //카운팅 정렬: 나이를 index로 하여 해당 배열에 나이와 이름을 append() 한다.
              p[age].append(age).append(' ').append(name).append('\n');
        }

        StringBuilder sb = new StringBuilder();
        for(StringBuilder val : p) {
                sb.append(val);
        }
        System.out.println(sb);
  }

}

 

 

 

✅ 또 다른 방법으로는 Collection.sort로 Comparator를 이용하는 방법이 있다. 

이 방법으로는 HashMap, List 를 이용했다.