[백준 JAVA] 10814번 풀이 - 나이순 정렬
by mini_minimport 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 형으로 변환 하여 비교한다!
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 7785번 풀이 - 회사에 있는 사람 (0) | 2023.08.16 |
---|---|
[백준 JAVA] 14425번 풀이 - 문자열 집합 (0) | 2023.08.15 |
[백준 JAVA] 1181번 풀이 - 단어 정렬 (Compare 메서드) (0) | 2023.08.13 |
[백준 JAVA] 11651번 풀이 - 좌표 정렬하기2 (0) | 2023.08.10 |
[백준 JAVA] 11650번 풀이 - 좌표 정렬하기 (람다식✨) (0) | 2023.08.09 |
블로그의 정보
개발자 미니민의 개발로그
mini_min