본문으로 바로가기
728x90
반응형

▷ 문제

N개의 평면 상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요.

정렬 기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다.

* 입력

첫째 줄에 좌표의 개수인 N(3<=N<=100,000)이 주어집니다.

두 번째 줄부터 N개의 좌표가 x, y 순으로 주어집니다. x, y값은 양수만 입력됩니다.

* 출력

N개의 좌표를 정렬하여 출력하세요.

▷ 입력 예시

5

2 7

1 3

1 2

2 5

3 6

▷ 출력 예시

1 2

1 3

2 5

2 7

3 6

▷ 풀이

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

  public class Main {	
      public int[][] solution(int n, int[][] arr){
        Arrays.sort(arr, (e1, e2) -> {
          if(e1[0] == e2[0]){
            return e1[1] - e2[1];
          } else {
            return e1[0] - e2[0];
          }
        });

        return arr;
      }

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

        int n = kb.nextInt();
        int[][] arr = new int[n][2];

        /*
        for(int i=0; i<n; i++){
          for(int x=0; x<2; x++){
            arr[i][x] = kb.nextInt();
          }
        } */

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

        // System.out.println(Arrays.deepToString(arr));
        kb.close();

        StringBuilder sb = new StringBuilder();
        for(int[] x : main.solution(n, arr)){
          sb.append(x[0] + " " + x[1] + "\n");
        }
        System.out.print(sb);
      }
    }

▷ 핵심 포인트

  • 일차원 배열은 Arrays.sort(), 이차원 배열은 이를 확장하여 구현할 수 있습니다.
반응형