반응형
import java.util.Scanner;
import java.util.Arrays;
public class Main{
static public void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr [][]= new int [n][2];
for(int i=0;i<n;i++){
arr[i][0]=sc.nextInt();
arr[i][1]=sc.nextInt();
}
//e1,e2 배열의 인덱스가 [0]이면 xi, [1]이면 yi이다.
Arrays.sort(arr,(e1, e2) -> {
if(e1[1]==e2[1]){
return e1[0]-e2[0]; //e1에서 e2를 빼야 함
}else
return e1[1]-e2[1];
}
);
StringBuilder sb=new StringBuilder();
for(int i=0;i<n;i++){
sb.append(arr[i][0]+" "+arr[i][1]+"\n");
}
System.out.println(sb);
}
}
Arrays.sort를 람다식을 이용해 호출할 수 있다.
e1,e2는 일반적인 배열이라고 생각하면 헷갈리고, 비교해야 할 두 수라고 보는게 더 이해하기 편한 것 같다. 반환하는 값은 0,음의 정수,양의정수 중 하나인데, 양의 정수일때만 두 객체의 위치를 바꿔준다.
반응형
댓글