이전 문제와 매우 유사한 문제라서 값만 바꿔주겠다.
주의할 점은 Arrays.sort의 compare 메소드는 차례대로 읽기 때문에 y를 기준으로 정렬해주기 위해서는 arr[i][1] 부터 입력받아 arr[i][0] 순서대로 입력하고 출력해야한다.
** 지금은 오름차순으로 e1 = 작은 값, e2= 큰 값이라면 e1-e2가 답이 되지만,
내림차순은 e2-e1을 return 해줘야한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class java_io {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
int[][] arr = new int[N][2];
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine()," ");
arr[i][1] = Integer.parseInt(st.nextToken());
arr[i][0] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr, (e1, e2) -> {
if(e1[0] ==e2[0]) {
return e1[1] - e2[1];
} else {
return e1[0] - e2[0];
}
});
StringBuilder sb = new StringBuilder();
for(int i=0; i<N; i++) {
sb.append(arr[i][1] +" " + arr[i][0]).append('\n');
}
System.out.println(sb);
}
}