알고리즘/백준

11651번 : 좌표 정렬하기 2

코딍코딍 2022. 7. 6. 10:23

https://www.acmicpc.net/problem/11651

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

 

문제

 

 

코드

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); sc.nextLine();
        int arr[][] = new int[n][2];
        for(int i=0;i<n;i++) {
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
            sc.nextLine();
        }
        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[1]==o2[1]){
                    return o1[0]-o2[0];
                }
                else {
                    return o1[1]-o2[1];
                }
            }
        });
        for(int i=0;i<n;i++)
            System.out.println(arr[i][0] + " " + arr[i][1]);

    }
}

 

 

해결방법

Arrays.sort()를 사용해 2차원 배열을 y좌표로 오름차순 정렬하고 y좌표가 같다면 x좌표로 오름차순 정렬하여 문제를 해결하였다.