[백준 JAVA] 11650번 풀이 - 좌표 정렬하기 (람다식✨)
by mini_minpackage baekjoon;
import java.util.Arrays;
import java.util.Scanner;
/**
* 11650번 - 좌표 정렬하기
* 2차원 평면 위의 점 N개가 주어진다.
* 좌표를 x좌표가 증가하는 순으로,
* x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
*
*/
public class _11650 {
public static 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();
}
//x값(0번째숫자)가 같은 경우, y값(1번째숫자) 비교
//그렇지 않으면 그냥 0번째 숫자 비교에서 그친다.
//****람다식 사용하는 것이 중요하군요....
Arrays.sort(arr, (arr1, arr2) -> {
if ( arr1[0] == arr2[0]) {
return arr1[1] - arr2[1];
} else {
return arr1[0] - arr2[0];
}
});
for(int i = 0; i < n; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
sc.close();
}
}
풀이
😭 아쉬운 점 : 처음에 2차원 배열 생각했으나, map 으로 정렬해볼까 ? 생각해서
map 에 keySet 이랑 values() 이런거 가지고 뻘짓을 좀 했다.....
핵심은, 2차원 배열에 저장하고,
람다식을 사용해서 sort 정렬을 하는 것 !
회사에서도 Comparator 메서드 로 증감율 정렬을 했는데... 저 식은 진짜 많이 쓰이는 것 같으니 (+유용하니까) 잊지 말자!!
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 1181번 풀이 - 단어 정렬 (Compare 메서드) (0) | 2023.08.13 |
---|---|
[백준 JAVA] 11651번 풀이 - 좌표 정렬하기2 (0) | 2023.08.10 |
[백준 JAVA] 1427번 풀이 - 소트인사이드 (0) | 2023.08.08 |
[백준 JAVA] 2751번 풀이 - 수 정렬하기2 (0) | 2023.08.07 |
[백준 JAVA] 25305번 풀이 - 커트라인 (0) | 2023.08.06 |
블로그의 정보
개발자 미니민의 개발로그
mini_min