๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 2751 ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2 ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 2. 2.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 2751๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2 ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

ํ•ด๊ฒฐ๋ฒ•

์ด ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ์ž„์—๋„ ๋ถˆ๊ณ ํ•˜๊ณ  ์ •๋‹ต๋ฅ ์ด 30%๋‚˜ ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


์•„๋งˆ ์ผ๋ฐ˜์ ์ธ STL์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ํ‹€๋ ธ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์ ‘๊ทผ๋ฒ•

์ •๋ ฌ์„ ํ•˜๋ผ๊ณ  ์ด๋ฏธ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์กŒ์ง€๋งŒ ๋ฌธ์ œ์˜ ์˜ค๋‹ต๋ฅ ์ด ๋†’๋‹ค.


์ž…๋ ฅ์„ ๋ณด๊ณ  ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

 

์šฐ์„  ์ˆ˜์˜ ๊ฐœ์ˆ˜ N์€ 1,000,000์ด๊ณ  ์‹œ๊ฐ„ ์ œํ•œ์ด 2์ดˆ๋ฉด ๋Œ€๋žต 2์–ต ~ 10์–ต ๊นŒ์ง€, ์•ˆ์ „ํ•˜๊ฒŒ 2์–ต ~ 5์–ต ๊นŒ์ง€๋ผ๊ณ  ์žก์ž.


๊ทธ๋Ÿผ O(N^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋ฉด, 1,000,000,000,000 ์œผ๋กœ ์ ˆ๋Œ€ ์ œํ•œ์‹œ๊ฐ„ ๋‚ด์— ํ†ต๊ณผํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ตœ์†Œ O(N log N)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1,000,000 x 6์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” 4๊ฐ€์ง€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ํ™•์ธํ•ด๋ณด์ž.

 

  1. ์„ ํƒ ์ •๋ ฌ
  2. ์‚ฝ์ž… ์ •๋ ฌ
  3. ํ€ต ์ •๋ ฌ
  4. ๊ณ„์ˆ˜ ์ •๋ ฌ

์ž…๋ ฅ์ด 100๋งŒ์ด๋ฉด ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N^2)์ธ Selection, Insertion sort๋Š” ๋‹น์—ฐํžˆ ํ†ต๊ณผํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

๊ทธ๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ€ต ์ •๋ ฌ, ๊ณ„์ˆ˜ ์ •๋ ฌ์ด ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผํ•  ๊ฒƒ์ด ํ€ต ์ •๋ ฌ์€ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ n log n์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ์—๋Š” n log n์ด ์•„๋‹ˆ๋ผ n^2์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.


๊ทธ๋ž˜์„œ ์กฐ์‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฒˆ ์ƒํ™ฉ์—์„œ๋Š” ๋น ๋ฅธ ์ž…์ถœ๋ ฅ๊ณผ ํ€ต ์†ŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ๊ฒƒ์ธ๋ฐ, ๋” ํ™•์‹คํžˆ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์กฐ๊ฑด์ด ๋ถ€ํ•ฉ๋˜๋Š” ํŠน์ •ํ•œ ์ƒํ™ฉ์—์„œ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ๊ณ„์ˆ˜ ์ •๋ ฌ(์นด์šดํŒ… ์†ŒํŠธ)๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ๋Š” ๊ฒƒ์ด ๋” ๋ฐ”๋žŒ์ง ํ•˜๋‹ค.

 

์ •๋‹ต ์ฝ”๋“œ

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));


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

        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(Integer.parseInt(br.readLine()));
        }

        Collections.sort(list);

        for(int i : list) {
            bw.write(i + "\n");
        }
        bw.flush();
        bw.close();
    }
}

๋ฌธ์ œ ํšŒ๊ณ 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๊ฝค ์˜ค๋ž˜ ์ „์— ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ์˜€๋‹ค.
์นด์šดํŒ… ์†ŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ํ’€๊ณ ์‹ถ์—ˆ์œผ๋‚˜ ๊ณ„์†ํ•ด์„œ ํ‹€๋ฆฐ ๋ฌธ์ œ์˜€์—ˆ๋‹ค.
์ง€๊ธˆ์€ ๋‹น์žฅ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์œผ๋‹ˆ, ๋‹ค์Œ์— ์—ฌ์œ ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ผญ ๋‹ค์‹œ ๋ณผ ๋ฌธ์ œ์— ์˜ฌ๋ ค๋†“์•˜๋‹ค.

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€