https://www.acmicpc.net/problem/11650
Arrays.sort를 사용하여 노드 배열을 Comparator를 통해 정렬한다.
Comparator의 compare 메서드를 재정의하여, 먼저 x 값을 기준으로 비교하고, x 값이 같으면 y 값을 기준으로 비교한다.
결과적으로, x 값이 같으면 y 값을 오름차순으로 정렬된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
Integer n = Integer.parseInt(br.readLine());
Node[] nodes = new Node[n];
for(int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
Node node = new Node(x, y);
nodes[i] = node;
}
Arrays.sort(nodes, new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
if(o1.x == o2.x) {
return o1.y - o2.y;
}
return o1.x - o2.x;
}
});
for(Node node : nodes) {
System.out.println(node.x + " " + node.y);
}
}
}
class Node {
int x;
int y;
public Node(int x, int y) {
this.x = x;
this.y = y;
}
}