백준 11651번

김경욱·2025년 8월 31일

백준

목록 보기
72/121

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

import static java.util.Collections.*;

public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine());

    int[][] graph = new int[N][2];



    for (int i = 0 ; i < N; i++)
    {
        StringTokenizer st = new StringTokenizer(br.readLine());

        graph[i][0] = Integer.parseInt(st.nextToken()); //[0][0] = 첫번째 x값

        graph[i][1] = Integer.parseInt(st.nextToken()); //[0][1] = 첫번째 y값

    }

    Arrays.sort(graph,(a,b) -> a[1] != b[1] ? a[1] - b[1] : a[0] - b[0] );

    for (int i = 0 ; i < N; i++)
    {
        System.out.println(graph[i][0]+" "+graph[i][1]);
    }

/
5
0 4 a(0,4) 4 와 2가 다를경우 y기준으로 오름차순
1 2 b(1,2) 4 와 2가 다르지 않을경우 x기준으로 오름차순
1 -1
2 2
3 3
/

}

}

람다식을 이해하는게 조금 어려웠다.
(a,b) -> a[1] != b[1] ? a[1] - b[1] : a[0] - b[0];
a와 b가 각각 배열 1개씩 차지 하고 있는 것이었다.
graph={(2,4),(2,5)};일 경우에
a는 (2,4) b는 (2,5)인 것이다.
a[1]은 4이고 b[1]은 5이다.
a[0]은 2이고 b[0]은 2이다.
y값 기준으로 먼저 정렬하니 a[1] - b[1]을 조건으로 넣은 후
둘이 다르면 그대로 a[1] - b[1] 조건으로 가고
둘이 같으면 a[0] - b[0]을 이용하여 x 기준으로 정렬시킨다.
2차원 배열에서의 람다가 어떻게 쓰이는 지 아주 살짝은 이해한 것 같다.

0개의 댓글