๐Ÿ Algorithm/๋ฐฑ์ค€

[๋ฐฑ์ค€] 1715๋ฒˆ: ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ(์ž๋ฐ”)

Dhey 2023. 10. 13. 17:42
๋ฐ˜์‘ํ˜•

โžฐ๋ฌธ์ œ

 

์ •๋ ฌ๋œ ๋‘ ๋ฌถ์Œ์˜ ์ˆซ์ž ์นด๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ ๋ฌถ์Œ์˜ ์นด๋“œ์˜ ์ˆ˜๋ฅผ A, B๋ผ ํ•˜๋ฉด ๋ณดํ†ต ๋‘ ๋ฌถ์Œ์„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜๋กœ ๋งŒ๋“œ๋Š” ๋ฐ์—๋Š” A+B ๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, 20์žฅ์˜ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ๊ณผ 30์žฅ์˜ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ์„ ํ•ฉ์น˜๋ ค๋ฉด 50๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋งค์šฐ ๋งŽ์€ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ์ด ์ฑ…์ƒ ์œ„์— ๋†“์—ฌ ์žˆ๋‹ค. ์ด๋“ค์„ ๋‘ ๋ฌถ์Œ์”ฉ ๊ณจ๋ผ ์„œ๋กœ ํ•ฉ์ณ๋‚˜๊ฐ„๋‹ค๋ฉด, ๊ณ ๋ฅด๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ๋น„๊ต ํšŸ์ˆ˜๊ฐ€ ๋งค์šฐ ๋‹ฌ๋ผ์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 10์žฅ, 20์žฅ, 40์žฅ์˜ ๋ฌถ์Œ์ด ์žˆ๋‹ค๋ฉด 10์žฅ๊ณผ 20์žฅ์„ ํ•ฉ์นœ ๋’ค, ํ•ฉ์นœ 30์žฅ ๋ฌถ์Œ๊ณผ 40์žฅ์„ ํ•ฉ์นœ๋‹ค๋ฉด (10 + 20) + (30 + 40) = 100๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 10์žฅ๊ณผ 40์žฅ์„ ํ•ฉ์นœ ๋’ค, ํ•ฉ์นœ 50์žฅ ๋ฌถ์Œ๊ณผ 20์žฅ์„ ํ•ฉ์นœ๋‹ค๋ฉด (10 + 40) + (50 + 20) = 120 ๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ๋œ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

N๊ฐœ์˜ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ์˜ ๊ฐ๊ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ์†Œํ•œ ๋ช‡ ๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

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

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ตœ์†Œ ๋น„๊ต ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1 

3
10
20
40

 

์˜ˆ์ œ ์ถœ๋ ฅ 1 

100

 

 

 

 

1715๋ฒˆ: ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ

์ •๋ ฌ๋œ ๋‘ ๋ฌถ์Œ์˜ ์ˆซ์ž ์นด๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ ๋ฌถ์Œ์˜ ์นด๋“œ์˜ ์ˆ˜๋ฅผ A, B๋ผ ํ•˜๋ฉด ๋ณดํ†ต ๋‘ ๋ฌถ์Œ์„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜๋กœ ๋งŒ๋“œ๋Š” ๋ฐ์—๋Š” A+B ๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, 20์žฅ์˜ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ๊ณผ 30์žฅ

www.acmicpc.net

 


 

๐Ÿ’กํ’€์ด

 ์ด ๋ฌธ์ œ๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ๋ฌธ์ œ๋‹ค.

์šฐ์„  ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.

 

1. ๊ฐ ์นด๋“œ ๋ฌถ์Œ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉฐ ์šฐ์„  ์ˆœ์œ„ ํ( pq )์— ์ €์žฅํ•œ๋‹ค.

   (์•„๋ฌด๋Ÿฐ ์„ค์ •๋„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ฎ์€ ์ˆซ์ž ์ˆœ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.)

 

2. pq์˜ ๋งจ ์œ„์˜ ๊ฐ’์„ ๊บผ๋‚ด๊ณ , ํ•œ ๋ฒˆ ๋” ๊บผ๋‚ด์–ด ๋”ํ•ด์„œ tmp ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.

   (๋‘ ๋ฒˆ ์—ฐ์†์œผ๋กœ ๊บผ๋‚ด๋ฉด ๊ฐ’์ด ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ๋‘ ๊ฐœ์˜ ์ˆ˜๊ฐ€ ๊บผ๋‚ด์–ด์ง„๋‹ค.)

 

3. ๋‘ ๋ฌถ์Œ์„ ๋น„๊ตํ•œ ํšŸ์ˆ˜ tmp๋ฅผ ์ตœ์ข… ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•  ๋ณ€์ˆ˜ sum์— ๋”ํ•œ๋‹ค.

 

4. ๋‹ค์Œ ๋น„๊ต ํšŸ์ˆ˜๋Š” ์ด์ „์˜ ๋น„๊ต ํšŸ์ˆ˜์™€ ๋”ํ•œ ๊ฐ’์ด๋ฏ€๋กœ tmp ๊ฐ’์„ pq์— ์ถ”๊ฐ€ํ•œ๋‹ค.

   (์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ ์ •๋ ฌ ๋œ๋‹ค.)

 

5. ๋น„๊ตํ•  ๊ฐ’์ด ํ•˜๋‚˜๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

 

 

โญ์ œ์ถœ ์ฝ”๋“œ

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int N = scan.nextInt();     //์นด๋“œ ๋ฌถ์Œ ์ˆ˜
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for(int i=0; i<N; i++){
            pq.add(scan.nextInt());     //๋‚ฎ์€ ์ˆซ์ž ์ˆœ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ๊ฒฐ์ •
        }

        int sum = 0;
        while(pq.size() > 1){       //๋น„๊ตํ•  ๊ฐ’์ด ํ•˜๋‚˜๋งŒ ๋‚จ์„๋•Œ๊นŒ์ง€
            int tmp = pq.poll() + pq.poll();
            sum += tmp;  //์ž‘์€ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ๋”ํ•ด์„œ ๋‹ค์‹œ ํ์— ์ถ”๊ฐ€
            pq.add(tmp);
        }
        System.out.println(sum);
    }
}

 

 

 

๋ฐ˜์‘ํ˜•