본문 바로가기
java

백준 10814 나이순 정렬

by MiaCoder 2024. 1. 22.

 

이차원 배열에서의 정렬을 하는 문제이다.

 

여기서 중요한 점은, 입력받는 첫 번쨰 값은 숫자, 두 번째 값은 문자열이기에 모두 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