개발자 미니민의 개발스터디

[백준 JAVA] 11650번 풀이 - 좌표 정렬하기 (람다식✨)

by mini_min

package 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 메서드 로 증감율 정렬을 했는데... 저 식은 진짜 많이 쓰이는 것 같으니 (+유용하니까) 잊지 말자!!

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기