๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 13975_ํŒŒ์ผ ํ•ฉ์น˜๊ธฐ 3

๋ฟŒ์•ผ._. 2023. 7. 14. 15:07

Gold IV

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/13975)

< ํŒŒ์ผ ํ•ฉ์น˜๊ธฐ 3 >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž‘์€ ๊ฐ’๋ผ๋ฆฌ ๋”ํ•ด์„œ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class _13975_ { // ํŒŒ์ผ ํ•ฉ์น˜๊ธฐ 3

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		PriorityQueue<Long> queue = new PriorityQueue<>();
		long result = 0;

		int t = Integer.parseInt(bf.readLine());
		for (int i = 0; i < t; i++) {
			int k = Integer.parseInt(bf.readLine());
			st = new StringTokenizer(bf.readLine());
			for (int j = 0; j < k; j++) {
				queue.add(Long.parseLong(st.nextToken()));
			}

			while (!queue.isEmpty()) {
				long a = queue.poll();
				long b = queue.poll();
				result += (a + b);
				if (queue.size() == 0)
					break;
				queue.add(a + b);
			}
			bw.write(result + "\n");
			result = 0;
		}
		bw.flush();
	}
}

 

Main

๋ณ€์ˆ˜)
queue : ์šฐ์„ ์ˆœ์œ„ ํ (์˜ค๋ฆ„์ฐจ์ˆœ)
result : ์ตœ์†Œ ๋น„์šฉ
t : ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜
k : ์†Œ์„ค์„ ๊ตฌ์„ฑํ•˜๋Š” ์žฅ์˜ ์ˆ˜

 

- ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜(t) ์ž…๋ ฅ๋ฐ›์•„ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฐ ์ตœ์†Œ ๋น„์šฉ ๊ตฌํ•˜๊ธฐ

- ์†Œ์„ค์„ ๊ตฌ์„ฑํ•˜๋Š” ์žฅ์˜ ์ˆ˜(k) ์ž…๋ ฅ๋ฐ›์€ ํ›„ ์ˆ˜๋งŒํผ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ queue์— ์ €์žฅ

queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ queue์—์„œ ๊ฐ’ 2๊ฐœ๋ฅผ ๋ฝ‘์•„ ๋”ํ•œ ๊ฐ’์„ ์ตœ์†Œ ๋น„์šฉ์— ๋”ํ•˜๊ณ  queue์—๋„ ์ €์žฅ

- result ์ถœ๋ ฅ ๋ฐ ์ดˆ๊ธฐํ™”