알고리즘

11650번 - 좌표 정렬하기(Stream, Comparator 사용)

LightSource 2023. 3. 30. 15:49

문제

풀이

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int p = Integer.parseInt(br.readLine());
        int[][] arr = new int[p][2];
        for (int i = 0; i < p; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            arr[i][0] = Integer.parseInt(st.nextToken());
            arr[i][1] = Integer.parseInt(st.nextToken());
        }
        StringBuilder sb = new StringBuilder();
        Arrays.stream(arr)
                .sorted(Comparator.comparingInt((int[] o) -> o[0])
                        .thenComparingInt((int[] o) ->o[1])
                )
                .forEach((int[] o) -> sb.append(o[0]).append(" ").append(o[1]).append("\n"));
        System.out.println(sb);
    }
}

알게 된 점

스트림객체로 변화 시킨 이후의 연산 메소드들에는 람다식의 매개변수로 배열의 요소들이 하나하나 들어가게 되는 것을 알게 되면서 Stream을 사용해서 Comparator 연산자를 사용하는 방법을 익힐 수 있엇다.

반응형