본문 바로가기

PS/백준

[백준/11650번/java] - 좌표 정렬하기

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    /**
     * 1. 첫줄에 입력받은 숫자로 열 개수 정하기 - N
     * 2. N x 2 배열 만들기
     * 3. for 문으로 저장하기
     * 4. for 문으로 배열 순회하기
     * 4-1. x 좌표를 기준으로 먼저 확인하고
     * 4-2. x 좌표가 동일한 경우 y 좌표로 확인하기
     * 5. for 문으로 배열 전부 출력하기
     */
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int[][] arr = new int[N][2];

        for(int i = 0; i < N; i++){
            arr[i][0] = scan.nextInt();
            arr[i][1] = scan.nextInt();
        }
        Arrays.sort(arr , (a,b)->{
            if(a[0] == b[0]) {
                return Integer.compare(a[1], b[1]);
            } else{
                return Integer.compare(a[0],b[0]);
            }
        });

        for(int j = 0; j < N; j++){
            System.out.println(arr[j][0]+ " " + arr[j][1]);
        }
    }
}

 

먼저 첫줄에 배열을 몇행으로 할지 N 을 입력받는다.

그래서 N x 2 인 2차원 int 배열을 생성하고 for 문을 통해서 해당 배열에 숫자들을 저장한다.

 

그 후 Arrays.sort() 를 이용해서 람다 표현식으로 첫번째 열이 x 좌표를 나타내므로 첫번째 열을 비교하고 만약 동일하다면 두번째 줄을 비교해서 정렬하는 방식을 택했다. sort 를 끝내고 나면 for 문으로 배열을 순회하면서 출력해준다.

 

끝!