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