[JAVA] 좌표 정렬하기 2

NoHae·2025년 2월 26일

백준

목록 보기
13/106

문제 출처

단계별로 풀어보기 > 정렬 > 좌표 정렬하기 2
https://www.acmicpc.net/problem/11651

문제 설명

2차원 평면 위의 점 N개가 주어질 때, y좌표 순으로 정렬하 되, y좌표가 같으면 x좌표 순으로 정렬하라.

접근 방법

좌표 정렬하기 문제와 똑같이 Arrays.sort를 이용하여 y좌표가 같을 경우 x좌표를 비교하여 정렬한다.

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 좌표_정렬하기_2 {
    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,(e1,e2) ->{
            if(e1[1] == e2[1]){
                return e1[0] - e2[0];
            }else{
                return e1[1] - e2[1];
            }
        });

        StringBuilder sb = new StringBuilder();

        for(int[] k: arr){
            sb.append(k[0] + " " + k[1]).append("\n");
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();

    }
}

Review

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 좌표_정렬하기_2_review {
    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, (y1,y2) -> {
            if(y1[1] == y2[1]){
                return y1[0] - y2[0];
            }else{
                return y1[1] - y2[1];
            }
        });

        StringBuilder sb = new StringBuilder();

        for(int j = 0; j<N; j++){
            sb.append(arr[j][0] + " " + arr[j][1]).append("\n");
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }
}

알게된 점

문제푼 흔적


Review

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글