백준 문제풀이/기본수학2

11650. 좌표 정렬하기 (자바, Java)

뮤츠 2022. 9. 25. 21:04

이거 실버5인데, 생각보다 엄청엄청 어려웠다.

Arrays.sort를 람다식을 이용해 오버라이딩해서 해결. 덕분에 많은걸 배웠다.

앞으로도 내장함수를 직접 변환할 줄 알아야겠다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		int[][] xy = new int[n][2];
		
		for (int i=0; i<n; i++) {
			String[] arr = (br.readLine()).split(" ");
			xy[i][0] = Integer.parseInt(arr[0]);
			xy[i][1] = Integer.parseInt(arr[1]);
		}
		
		//Override
		Arrays.sort(xy, (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(xy[i][0] + " " + xy[i][1] + "\n");
		}
		
		System.out.println(sb);
		

	}

}