이차원 배열에서의 정렬을 하는 문제이다.
여기서 중요한 점은, 입력받는 첫 번쨰 값은 숫자, 두 번째 값은 문자열이기에 모두 String로 받은 후
정수타입으로 변환해야 한다.
그리고 Comparator 인터페이스를 사용하는 것이 중요하다.
여기서 사용할 수 있는 compare의 특성을 생각해보자.
import java.util.Arrays;
import java.util.Scanner;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.nextLine(); // 개행 문자 소비
String arr[][] = new String[N][2];
//배열 선언
for (int i = 0; i < N; i++) {
arr[i][0] = sc.next();
arr[i][1] = sc.next();
}
//값 입력받기
Arrays.sort(arr, new Comparator<String[]>() {
// 비교를 위한 Comparator 인터페이스를 사용한다.
// 이를 이요하면 compare를 사용할 수 있다.
@Override
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
// 두 개의 인자를 받아 두 값을 뺀다.
// 첫 번째 값이 크다면 양수.
// 두 번째 값이 크다면 음수.
// 두 값이 같다면 0을 반환한다.
}
// compare는 반환 값이 양수일 경우 두 번째 인자를 먼저 첫 번째 인자를 두번째로 정렬한다.
// 반환값이 음수일 경우 첫 번째 값을 먼저 반환한다.
// 반환값이 0일 경우 정렬하지 않는다.
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
sc.close();
}
}'java' 카테고리의 다른 글
| 백준 10815 숫자 카드 자바 java (1) | 2024.01.22 |
|---|---|
| 백준 18870 좌표압축 자바 java (0) | 2024.01.22 |
| 백준 1181 단어 정렬 (1) | 2024.01.22 |
| 백준 11650 좌표 정렬하기 자바 java (0) | 2024.01.18 |
| 백준 2751 수 정렬2 자바 java (0) | 2024.01.18 |