문제에 대한 자세한 정보는 백준 | 11651번 : 좌표 정렬하기 2에서 확인할 수 있다.
import java.io.*;
import java.util.*;
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());
int[][] coordinate = new int[n][2];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
coordinate[i][0] = Integer.parseInt(st.nextToken());
coordinate[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(coordinate, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
if (o1[1] == o2[1])
return o1[0] - o2[0];
return o1[1] - o2[1];
}
});
for (int i = 0; i < n; i++) {
bw.write(String.valueOf(coordinate[i][0]) + " " + String.valueOf(coordinate[i][1]) + "\n");
}
br.close();
bw.close();
}
}
메모리 : 62692KB
시간 : 844ms
11650번 : 좌표 정렬하기와 정렬 기준만 다른 문제였다. 11650번을 풀이할 때는 coordinate class를 작성해 Collections.sort()를 사용했다면 이번에는 2차원 배열에 저장 후 compare 함수를 작성하는 방식으로 풀어봤다.