import java.util.*;
class Point implements Comparable<Point>{
public int x,y;
//생성
Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Point o) {
//x값과 비교값의 x값이 같다면,
if(this.x == o.x) return this.y - o.y;
//x값을 오름차순으로 정렬. 내림차순 : o.x - this.x
else return this.x - o.x;
//Integer.compare(this.x,o.x); (오름차순정렬)
//Double.compare(this.x,o.x); 소숫점이 있는 값 정렬. (오름차순)
}
}
class Main {
public ArrayList<Point> solution(int n,ArrayList<Point> arr) {
Collections.sort(arr);
return arr;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
ArrayList<Point> arr = new ArrayList<>();
for(int i=0; i<n; i++) {
int x = kb.nextInt();
int y = kb.nextInt();
arr.add(new Point(x, y));
}
for(Point o : T.solution(n, arr)) System.out.println(o.x + " " + o.y);
}
}
CompareTo 메소드를 담고있는 Comparable을 implements해서 좌표정렬을 할 수있다!
먼저 x,y값을 받을 class를 생성해준다.
arr에 값을 모두 받고, compareTo 메소드를 통해
this.x (비교값) == o.x(들어온값) 이라면 this.y와 o.y를 비교해 음수가 나오도록 return 해준다.
내림차순으로 정렬을 하려면 o.y-this.y를 return하면된다.
Collections.sort에 해당 arr을 넣으면 자동으로 compareTo 메소드를 적용시킨값을 return해준다.
Comparable을 이용하여 좌표를 정렬할 때 유용하게 사용하자!
Collections.sort