개발자 미니민의 개발스터디

[백준 JAVA] 10814번 풀이 - 나이순 정렬

by mini_min

import java.util.*;
import static java.lang.String.valueOf;

/**
 * 10814번 풀이 - 나이순 정렬
 * 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다.
 * 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 오도록 정렬하라.
 * 3
 * 21 Junkyu
 * 21 Dohyun
 * 20 Sunyoung
**/
public class Main10 {

    public static void main(String[] args) throws Exception {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        String[][] arr = new String[n][2];

        for ( int i = 0; i < n; i++ ){
            arr[i][0] = valueOf(sc.nextInt());
            arr[i][1] = sc.next();
        }

        Arrays.sort(arr, new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]);
            }
        });

        for ( int i = 0; i < n; i++ ){
            System.out.println(arr[i][0] + " " + arr[i][1]);
        }
        sc.close();

    }
}

 

풀이

이번 문제는 정렬 단계 문제와 동일하게 new Comparator 를 사용해서 정렬한다.

다만, 이번 문제의 특이점?은 이것이다.

문자열 배열을 정렬한다는 것.
그리고 2차원 배열이라는 것.

 

문자열 배열을 정렬하기 위해서 new Comparator 객체를 생성하고 Compare 메서드를 오버라이드해야한다.

그리고 비교는 두 배열 대상의 '첫번째 열'을 가지고 진행한다. 

return o1[0] - o2[0];

 

해당 값은 숫자 형태의 문자열이기 때문에, Integer 형으로 변환 하여 비교한다!

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기