백준

백준 11650 좌표 정렬하기(Java)

Park DJ 2023. 1. 19. 23:47

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

 

11650번: 좌표 정렬하기

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

www.acmicpc.net


 

해석 및 팁

 


 

이중배열은 기본으로 주어지는 Arrays.sort가 사용불가능하기 때문에  Comparator 재정의를 한 후 Comparator에 있는 메서드인 compare를 오버 라이딩해야 합니다. x의 좌표가 같으면 y좌표를 오름차순으로 출력해 주면 됩니다.

 


 

Java 코드

 


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

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    int[][] arr = new int[n][2];
    
    for(int i = 0; i < n; i++) {
      arr[i][0] = sc.nextInt();
      arr[i][1] = sc.nextInt();
    }

    Arrays.sort(arr, new Comparator<int[]>() {
      public int compare(int[] a1, int[] a2) {
        if(a1[0] == a2[0]) return a1[1] - a2[1];
        else return a1[0] - a2[0];
      }
    });
    
    for(int i = 0; i < n; i++) {
      System.out.println(arr[i][0] + " " + arr[i][1]);
    }

  }
}