JuSeok

11651번

문제

  • 2차원 평면 위의 점 N개가 주어졌을 때, 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순으로 정렬하는 문제
문제 해결 순서
  1. 먼저 x, y좌표를 가지고 있는 Location 클래스를 선언
  2. Location 클래스에 Comparable 인터페이스의 compareTo 메소드를 오버라이드함
  3. 만약 y좌표가 같다면 x좌표를 오름차순으로, y좌표가 다르다면 y좌표를 오름차순으로 정렬
  4. 반복문으로 x, y좌표를 입력받고 Collections.sort()를 통해 정렬
  5. 출력 후 마무리
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    class Location implements Comparable<Location>{
      int x = 0;
      int y = 0;

      @Override
      public int compareTo(Location l){
        if(y == l.y){
          return x - l.x;
        }
        else{
          return y - l.y;
        }
      }
    }
    ArrayList<Location> location = new ArrayList();

    for(int i=0; i<n; i++){
      Location l = new Location();
      l.x = scan.nextInt();
      l.y = scan.nextInt();
      location.add(l);
    }

    Collections.sort(location);

    for(Location l : location){
      System.out.print(l.x);
      System.out.print(" " + l.y + "\n");
    }
  }
}

Tags