11651번
문제
- 2차원 평면 위의 점 N개가 주어졌을 때, 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순으로 정렬하는 문제
문제 해결 순서
- 먼저 x, y좌표를 가지고 있는 Location 클래스를 선언
- Location 클래스에 Comparable 인터페이스의 compareTo 메소드를 오버라이드함
- 만약 y좌표가 같다면 x좌표를 오름차순으로, y좌표가 다르다면 y좌표를 오름차순으로 정렬
- 반복문으로 x, y좌표를 입력받고
Collections.sort()를 통해 정렬 - 출력 후 마무리
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");
}
}
}