본문 바로가기

백준

[JAVA] 백준 11651번: 좌표 정렬하기 2

 


문제

  • 2차원 평면 위의 점 N개가 주어질 때, y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬 후 출력하는 문제.

 

아이디어

  • 1차원 배열에 x, y 좌표를 저장하고, comparator 재구현을 통해 정렬한다.

 

풀이

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

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

        List<int[]> list = new ArrayList<>();

        for(int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine());
            list.add(new int[]{Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())});
        }
        
        // comparator 재구현
        list.sort((n1, n2)->{
            if(n1[1] != n2[1]) {
                return n1[1]-n2[1];
            }
            return n1[0]-n2[0];
        });

        for(int[] l: list){
            sb.append(l[0]).append(' ').append(l[1]).append('\n');
        }
        System.out.println(sb);
    }
}

 

 

채점 결과

11651번 채점 결과

기타

 

문제 링크