2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
좌표에 대한 클래스를 만들었다. X의 값 순으로, 만약 X가 같으면 Y순으로 정렬했다
import java.util.*;
import java.io.*;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
ArrayList<Location> lc = new ArrayList<Location>();
int xTemp;
int yTemp;
StringTokenizer st;
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
xTemp = Integer.parseInt(st.nextToken());
yTemp = Integer.parseInt(st.nextToken());
lc.add(new Location(xTemp, yTemp));
}
Collections.sort(lc);
for(Location l : lc){
bw.write(l.getX()+" "+l.getY()+"\n");
}
bw.flush();
br.close();
bw.close();
}
}
class Location implements Comparable<Location> {
private int x;
private int y;
public Location(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Location l) {
if(this.x>l.getX()){
return 1;
}else if(this.x == l.getX()) {
if(this.y>l.getY()) {
return 1;
}else {
return -1;
}
}else {
return -1;
}
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}