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

[백준 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

활동하기