11650번
문제
문제 풀이
- Arrays의 sort()는 2차원 배열을 정렬할 수 없다. 따라서, sort() 메서드 안에 매개변수인 Comparator를 람다식으로 구현하여 정렬 기준을 직접 지정해줘야 한다.
sort(T[] a, Comparator<? super T> c)
interface Comparator<T> 를 람다식(익명객체)으로 구현하여 일회용으로 사용한다.
제출 코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i=0; i < N; i++){
StringTokenizer st = new StringTokenizer(br.readLine()," ");
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = 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][0] + " " + arr[i][1]).append("\n");
}
System.out.println(sb);
br.close();
}
}