์ด๋ฒ ๋ฌธ์ ๋, ์ด์ ์ ํ์์๋ 11650 ๋ฌธ์ ์ ๊ต์ฅํ ํก์ฌํ๋ค.
๋ค๋ง, ์ฐจ์ด์ ์ด ์๋ค๋ฉด, y์ขํ ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ ๋ค์, y์ขํ๊ฐ ๊ฐ๋ค๋ฉด, x์ขํ๋ฅผ ๋น๊ตํด์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋น๊ตํ๋ค๋ ์ ์ด๋ค.
์ ๋ฒ ๋ฌธ์ ์์๋, Comparator ์ implements ํ๋ CustomComparator ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ํด๊ฒฐํ์๋๋ฐ, ์ด๋ฒ์ ๋๋ค ์ ์ฐ์ต๋ ํ ๊ฒธ, ๋๋ค์์ ์ด์ฉํด์ ํ์ด๋ดค๋ค.
๋๋ค์์ผ๋ก ํ์ด์ primitive ํ์ ์ int ๋ฐฐ์ด๋ก ํด๊ฒฐ ํ ์ ์์๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
//2์ฐจ์ ํ๋ฉด ์์ ์ N๊ฐ๊ฐ ์ฃผ์ด์ง๊ณ ์ขํ๋ฅผ y์ขํ๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก, y์ขํ๊ฐ ๊ฐ๋ค๋ฉด x์ขํ๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.valueOf(br.readLine());
int[][] coordinate = new int[N][2];
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
coordinate[i][0] = Integer.valueOf(input[0]);
coordinate[i][1] = Integer.valueOf(input[1]);
}
// System.out.println(Arrays.deepToString(coordinate));
Arrays.sort(coordinate, (coord1, coord2) -> {
if (coord1[1] == coord2[1]) {
return coord1[0] - coord2[0];
} else {
return coord1[1] - coord2[1];
}
});
// System.out.println(Arrays.deepToString(coordinate));
for (int i = 0; i < N; i++) {
sb.append(coordinate[i][0] + " " + coordinate[i][1] + "\n");
}
System.out.println(sb);
}
}
Comparator ๊ตฌํํด์ ํด๊ฒฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws IOException {
//2์ฐจ์ ํ๋ฉด ์์ ์ N๊ฐ๊ฐ ์ฃผ์ด์ง๊ณ ์ขํ๋ฅผ y์ขํ๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก, y์ขํ๊ฐ ๊ฐ๋ค๋ฉด x์ขํ๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.valueOf(br.readLine());
Integer[][] coordinate = new Integer[N][2];
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
coordinate[i][0] = Integer.valueOf(input[0]);
coordinate[i][1] = Integer.valueOf(input[1]);
}
// System.out.println(Arrays.deepToString(coordinate));
Arrays.sort(coordinate,new CustomComparator());
// System.out.println(Arrays.deepToString(coordinate));
for (int i = 0; i < N; i++) {
sb.append(coordinate[i][0] + " " + coordinate[i][1] + "\n");
}
System.out.println(sb);
}
static class CustomComparator implements Comparator<Integer[]> {
@Override
public int compare(Integer[] a1, Integer[] a2) {
if (a1[1].equals(a2[1])) {
return a1[0] - a2[0];
} else {
return a1[1] - a2[1];
}
}
}
}