728x90
반응형
▷ 문제
N개의 평면 상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요.
정렬 기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다.
* 입력
첫째 줄에 좌표의 개수인 N(3<=N<=100,000)이 주어집니다.
두 번째 줄부터 N개의 좌표가 x, y 순으로 주어집니다. x, y값은 양수만 입력됩니다.
* 출력
N개의 좌표를 정렬하여 출력하세요.
▷ 입력 예시
5
2 7
1 3
1 2
2 5
3 6
▷ 출력 예시
1 2
1 3
2 5
2 7
3 6
▷ 풀이
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public int[][] solution(int n, int[][] arr){
Arrays.sort(arr, (e1, e2) -> {
if(e1[0] == e2[0]){
return e1[1] - e2[1];
} else {
return e1[0] - e2[0];
}
});
return arr;
}
public static void main(String[] args){
Main main = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[][] arr = new int[n][2];
/*
for(int i=0; i<n; i++){
for(int x=0; x<2; x++){
arr[i][x] = kb.nextInt();
}
} */
for(int i=0; i<n; i++){
arr[i][0] = kb.nextInt();
arr[i][1] = kb.nextInt();
}
// System.out.println(Arrays.deepToString(arr));
kb.close();
StringBuilder sb = new StringBuilder();
for(int[] x : main.solution(n, arr)){
sb.append(x[0] + " " + x[1] + "\n");
}
System.out.print(sb);
}
}
▷ 핵심 포인트
- 일차원 배열은 Arrays.sort(), 이차원 배열은 이를 확장하여 구현할 수 있습니다.
반응형