๊ธฐ๋ก๋ฐฉ

BOJ_10989 : ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3 ๋ณธ๋ฌธ

CodingTest/Java

BOJ_10989 : ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

Soom_1n 2022. 10. 23. 20:04

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

10989๋ฒˆ: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

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

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ค‘๋ณต ๊ฐ€๋Šฅํ•œ n๊ฐœ์˜ ์ˆ˜๊ฐ€ 10,000,000๊ฐœ ์ดํ•˜๋กœ ์ž…๋ ฅ๋˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค.
    • O(n^2) ์ผ๋•Œ, 100,000,000,000,000(๋ฐฑ ์กฐ) ์ด๋ฏ€๋กœ ์ œํ•œ์‹œ๊ฐ„ 3์ดˆ๋ฅผ ๋„˜๊ธฐ๊ฒŒ ๋œ๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ Arrays.sort()๋Š” ํ‰๊ท  O(nlogn)์ด์ง€๋งŒ, ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)์ด ๋‚˜์˜จ๋‹ค.
    • ์ด ๋ฌธ์ œ๋Š” ์ž…์ถœ๋ ฅ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋ฉด ์•„์Šฌ์•„์Šฌํ•˜๊ฒŒ ํ†ต๊ณผ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์นด์šดํŒ… ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
    • ์ž…๋ ฅ๋˜๋Š” ์ˆซ์ž๋ฅผ ์ธ๋ฑ์Šค๋กœ, ์นด์šดํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int arr[] = new int[10001];
        int n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n; i++){
            arr[Integer.parseInt(br.readLine())]++;
        }

        StringBuilder sb = new StringBuilder();

        for (int i = 1; i < 10001; i++){
            while (arr[i] > 0){
                sb.append(i).append('\n');
                arr[i]--;
            }
        }
        System.out.println(sb);
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ๋˜๋Š” n๊ฐœ์˜ ์ˆซ์ž๋“ค์˜ ๋ฒ”์œ„๊ฐ€ 1~10000์ด๋ฏ€๋กœ, ์ธ๋ฑ์Šค๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด arr๋ฅผ ์„ ์–ธํ•œ๋‹ค.
    • ์ž…๋ ฅ๋œ ์ˆ˜๋ฅผ ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด arr์— ์นด์šดํŠธํ•œ๋‹ค.
  • ๋ฐฐ์—ด arr๋ฅผ 1๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ 0์ด ๋ ๋•Œ๊นŒ์ง€, ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ž…๋ ฅ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด BufferedReader์™€ StringBuilder๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

๐Ÿ”ธ ๋‹ค๋ฅธ ํ’€์ด ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());
        int arr[] = new int[n];

        for (int i = 0; i < n; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }

        Arrays.sort(arr);

        for (int i = 0; i < n; i++){
            sb.append(arr[i]).append('\n');
        }
        System.out.println(sb);
    }
}
  • ์ž…๋ ฅ ๋œ ์ˆ˜๋ฅผ ๋ฐฐ์—ด arr์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ ๋’ค Arrays.sort()๋กœ ์ •๋ ฌํ•œ๋‹ค.
    • Arrays.sort()๋Š” dual-pivot Quick sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(nlogn)์ด์ง€๋งŒ,
      ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๋กœ ์ข‹์ง€ ์•Š์€ ์„ฑ๋Šฅ์ด ๋‚˜์˜ค๊ธฐ๋„ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋ธŒ๋ก ์ฆˆ 1 ๋ฌธ์ œ์˜€์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
  • ์ •๋ ฌ ์‹œ๋ฆฌ์ฆˆ์˜ ๋ํŒ ๋ฌธ์ œ์ธ๋ฐ, ์นด์šดํŒ… ์ •๋ ฌ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
    • ์˜ˆ์ „์— python์œผ๋กœ ํ’€๋‹ค๊ฐ€ ํฌ๊ธฐํ•œ ๋ฌธ์ œ์˜€๋Š”๋ฐ...๋‹ต์„ ์ฐพ์•„๋ณด์ง€ ์•Š์œผ๋ ค๊ณ  ๊ณ ์ง‘ ๋ถ€๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ด ๋ฌธ์ œ์—์„œ Arrays.sort()์™€ ์นด์šดํŒ… ์ •๋ ฌ์˜ ์ฐจ์ด๋Š” 2๋ฐฐ์ •๋„ ๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_11004 : K๋ฒˆ์žฌ ์ˆ˜  (0) 2022.10.25
BOJ_6996 : ์• ๋„ˆ๊ทธ๋žจ  (0) 2022.10.24
BOJ_1411 : ๋น„์Šทํ•œ ๋‹จ์–ด  (0) 2022.10.20
BOJ_1049 : ๊ธฐํƒ€์ค„  (0) 2022.10.19
BOJ_1015 : ์ˆ˜์—ด ์ •๋ ฌ  (0) 2022.10.19