백준 알고리즘 문제(84) - 좌표 정렬하기 2

Code_Alpacat·2021년 9월 16일
0

이전 문제와 매우 유사한 문제라서 값만 바꿔주겠다.

주의할 점은 Arrays.sort의 compare 메소드는 차례대로 읽기 때문에 y를 기준으로 정렬해주기 위해서는 arr[i][1] 부터 입력받아 arr[i][0] 순서대로 입력하고 출력해야한다.

** 지금은 오름차순으로 e1 = 작은 값, e2= 큰 값이라면 e1-e2가 답이 되지만,
내림차순은 e2-e1을 return 해줘야한다.

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


public class java_io {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	public static void main(String[] args) throws IOException {
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st;
		int[][] arr = new int[N][2];
		
		for(int i=0; i<N; i++) {
			st = new StringTokenizer(br.readLine()," ");
			arr[i][1] = Integer.parseInt(st.nextToken());
			arr[i][0] = Integer.parseInt(st.nextToken());
			
		}
		
		Arrays.sort(arr, (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(arr[i][1] +" " + arr[i][0]).append('\n');
			
		}
		System.out.println(sb);
		
	}
}
profile
In the future, I'm never gonna regret, cuz I've been trying my best for every single moment.

0개의 댓글