๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 11650 ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 16.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/11650

  • 2์ฐจ์› ํ‰๋ฉด ์œ„์˜ ์  N๊ฐœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ขŒํ‘œ๋ฅผ x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, x์ขŒํ‘œ๊ฐ€ ๊ฐ™์œผ๋ฉด y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— ์ ์˜ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” i๋ฒˆ์ ์˜ ์œ„์น˜ xi์™€ yi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (-100,000 ≤ xi, yi ≤ 100,000) ์ขŒํ‘œ๋Š” ํ•ญ์ƒ ์ •์ˆ˜์ด๊ณ , ์œ„์น˜๊ฐ€ ๊ฐ™์€ ๋‘ ์ ์€ ์—†๋‹ค.
  • ์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ ์„ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์–ด์ œ ๊ณต๋ถ€ํ–ˆ๋˜ Comparator์„ ์‚ฌ์šฉํ•˜์—ฌ x์ขŒํ‘œ๊ฐ’์„ ๋น„๊ตํ•ด์ฃผ๊ณ  ๊ฐ™์„ ๊ฒฝ์šฐ, y๊ฐ’์„ ๋น„๊ตํ•ด์ฃผ์—ˆ๋‹ค. 

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • X

๊ณต๋ถ€ํ–ˆ๋˜ ๋ณด๋žŒ์ด ๋Š๊ปด์ง€๋Š” ๋ฌธ์ œ์˜€๋‹ค ใ…Žใ…Ž

์ฝ”๋“œ

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

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

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

        // ์ขŒํ‘œ ๊ฐ’ ์ €์žฅํ•  ๋ฐฐ์—ด
        int arr[][] = new int[N][2];

        // ์ž…๋ ฅ ๊ฐ’์„ ๋ฐฐ์—ด์— ์ €์žฅ
        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            arr[i][0] = Integer.parseInt(st.nextToken());
            arr[i][1] = Integer.parseInt(st.nextToken());
        }

        // ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
        Arrays.sort(arr, (n1, n2) -> {
            // ๋งŒ์•ฝ x์ขŒํ‘œ์˜ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด
            if((n1[0] - n2[0]) == 0){
                // y์ขŒํ‘œ ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ์ •๋ ฌ
                return n1[1] - n2[1];
            }

            // ์•„๋‹ˆ๋ผ๋ฉด x์ขŒํ‘œ ๊ฐ’์œผ๋กœ ์ •๋ ฌ
            return n1[0] - n2[0];
        });

        for(int i = 0; i < N; i++){
            sb.append(arr[i][0] + " " + arr[i][1] + "\n");
        }

        System.out.println(sb);
    }
}