본문 바로가기
PS/Baekjoon

[Baekjoon] 11651 - 좌표 정렬하기 2

by 서현 SEOHYEON 2023. 6. 2.

📝 문제

 

 

🔑 풀이 과정

11650번 - 좌표 정렬하기 1 문제는 Point 클래스를 따로 생성해서 풀이했으나,

이번 11651번 문제는 그냥 2차원 배열을 생성해서 풀이했다.

 

어려운건 없고, 문제 그대로  y좌표를 먼저 비교해서 y좌표순으로 정렬되게 하고,

만약 y좌표가 같다면 x좌표를 비교해서 x좌표 순으로 정렬되게 한다.

 

Array.sort() + Comparator 사용

 

 

🔓 답안

import java.io.*;
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        //입력 받기
        int N = Integer.parseInt(br.readLine());
        int[][] arr = new int[N][2];

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

            arr[i][0] = Integer.parseInt(st.nextToken());
            arr[i][1] = Integer.parseInt(st.nextToken());
        }
        //---입력 종료

        //정렬
        Arrays.sort(arr, new Comparator<int[]>(){
            @Override
            public int compare(int[] o1, int[] o2){
                if(o1[1] != o2[1]) //y좌표가 다른 경우, y좌표가 증가하는 순으로
                    return o1[1] - o2[1];
                else  //y좌표가 같은 경우, x좌표가 증가하는 순으로
                    return o1[0] - o2[0];
            }
        });

        //출력
        for(int i = 0; i < N; i++){
            bw.write(arr[i][0] + " " + arr[i][1] + "\n");
        }

        bw.flush();
        bw.close();
    }

}

 

 

 

🖤 알고리즘 분류

- 정렬

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 11866 - 요세푸스 문제 0  (0) 2023.06.04
[Baekjoon] 2751 - 수 정렬하기 2  (0) 2023.06.03
[Baekjoon] 1181 - 단어 정렬  (0) 2023.06.01
[Baekjoon] 11650 - 좌표 정렬하기  (0) 2023.05.31
[Baekjoon] 10814 - 나이순 정렬  (0) 2023.05.30

댓글