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

[Java] BOJ 10989 ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

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

๋ฌธ์ œ 

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

  • N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.
  • ์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

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

  • ๋ฐฐ์—ด์„ 1๋ถ€ํ„ฐ 10000๊นŒ์ง€ ๋งŒ๋“ค์–ด์„œ ์ž…๋ ฅ๋ฐ›๋Š” ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’์„ + 1ํ•ด์ค˜์„œ ๋ช‡๋ฒˆ ๋‚˜์™”๋Š”์ง€ ๊ธฐ๋กํ•œ๋‹ค.
    • 2๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด [0, 0, 1, 0, 0 ...] ์ด๋Ÿฐ์‹์œผ๋กœ ๊ธฐ๋กํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  1๋ถ€ํ„ฐ 10000๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ํ•ด๋‹น ๋ฐฐ์—ด ๊ฐ’์ด 0์ด ์•„๋‹ˆ๋ฉด ๊ทธ ๋ฐฐ์—ด ๊ฐ’๋งŒํผ ํ•ด๋‹น ๋ฐฐ์—ด ๋ฒˆ์งธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

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

  • ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์ •๋ง ๋งŽ์ด ๋‚ฌ๋‹ค.. ์ฒ˜์Œ์— ๋ฐฐ์—ด๋กœ ํ•  ์ƒ๊ฐ์„ ์•ˆํ•˜๊ณ  Arrays.sort()๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ณ .. ๋‹ค์Œ์— ๋˜ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋Š”๋ฐ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ ์œ„์— ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. 
  • ๊ทธ ๋‹ค์Œ์—๋Š” 1๋ถ€ํ„ฐ 10000๊นŒ์ง€ ๋Œ๋ฆฌ๋Š” ๋ฐ˜๋ณต๋ฌธ์ด ๋ฌธ์ œ์ธ๊ฐ€ ์ƒ๊ฐํ•ด์„œ TreeSet์—๋‹ค๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ์ˆซ์ž๋“ค์„ ์ €์žฅํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ์ง€ ์•Š๊ณ  ์ €์žฅ๋œ ์ˆซ์ž๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•ด์„œ ์ €์žฅ๋œ ์ˆซ์ž๋ฒˆ์งธ์˜ ๋ฐฐ์—ด ๊ฐ’๋งŒํผ ์ˆœ๋ฒˆ์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. 
  • ์•Œ๊ณ ๋ณด๋‹ˆ TreeSet ์ž์ฒด๊ฐ€ ์•ˆ์—์„œ ์ž์ฒด ์ •๋ ฌ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ด์˜€๋‹ค.. (๊ทธ๊ฒƒ๋•Œ๋ฌธ์— Set ์ค‘์— TreeSet์„ ๊ณจ๋ž๋Š”๋ฐ.. ์ด๊ฒƒ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ ์ค„์€ ๋ชฐ๋ž๋‹ค....ใ…œใ…œ)
  • ๊ฒฐ๊ตญ ์ •๋‹ต์€ ์œ„์— ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ผ์ผ์ด System.out.prinln์„ ์“ฐ์ง€ ์•Š๊ณ  StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ์„ฑ๊ณตํ–ˆ๋‹ค... ใ…œ

์ •๋‹ต์„ ์œ„ํ•ด ๋ฐœํŒ์ด ๋œ ์‹œ๊ฐ„์ดˆ๊ณผ๋“ค....
ํ—˜๋‚œํ•œ ์—ฌ์ •์ด์˜€๋‹ค...

์ฝ”๋“œ

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

public class BOJ10989 {
    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[10001];

        for(int i = 0; i < N; i++) {
            int n = Integer.parseInt(br.readLine());

            // ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ๊ทธ ์ˆ˜๋ฒˆ์งธ ๋ฐฐ์—ด์„ ์นด์šดํŠธ + 1
            arr[n] = arr[n] + 1;
        }

        // ๋ช‡๊ฐœ ์ถœ๋ ฅ๋˜์—ˆ๋Š”์ง€ ์นด์šดํŠธํ•  ๋ณ€์ˆ˜
        int cnt = 0;

        // ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ 1๋ถ€ํ„ฐ 10000๊นŒ์ง€๋ฏ€๋กœ
        for(int i = 1; i < 10001; i++){
            // arr์˜ i๋ฒˆ์งธ๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด ์ž…๋ ฅ์ด ๋œ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—
            if(arr[i] != 0){
                // ์ž…๋ ฅ๋œ ํšŸ์ˆ˜๋งŒํผ
                for(int j = 0; j < arr[i]; j++){
                    // ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์ €์žฅ
                    sb.append(i + "\n");
                    // ์ถœ๋ ฅ ์นด์šดํŠธ + 1
                    cnt = cnt + 1;
                }
            }

            // ๋งŒ์•ฝ ์ถœ๋ ฅ ์นด์šดํŠธ๊ฐ€ ๋ช‡๊ฐœ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” N๊ณผ ๊ฐ™๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ
            if(cnt == N){
                break;
            }
        }

        System.out.println(sb);
    }
}