๐Ÿงฉ Algorithm/[BOJ] Gold

BOJ 1715๋ฒˆ : ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ (Python/Gold 4)

devCloud 2023. 9. 4. 17:00
728x90
 

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

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

www.acmicpc.net


์„ค๋ช…

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

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

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

 

ํ’€์ด

โ— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค - 4 40 100 20 120 / ๊ฒฐ๊ณผ 500

4๊ฐœ์˜ ์นด๋“œ ๋ฌถ์Œ์ด ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ์žˆ๋‹ค. ๋น„๊ตํ•œ ํšŸ์ˆ˜๊ฐ€ ์ตœ์†Œ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ์ž‘์€ ๋ฌถ์Œ๋ถ€ํ„ฐ ๋น„๊ตํ•œ๋‹ค.

 

1. 20 vs 40 → 20๊ณผ 40์„ ๋น„๊ตํ–ˆ์œผ๋ฏ€๋กœ 20 + 40 = 60, ๋น„๊ตํšŸ์ˆ˜๋Š” 60์ด๋‹ค. (ํŽธํ•˜๊ฒŒ ๋ฌถ์Œ์œผ๋กœ ๋ด๋„ ๋œ๋‹ค.) 

๊ทธ๋Ÿผ ๋‚จ์€ ๋ฌถ์Œ๋“ค์€ 60 100 120์ด๋‹ค. ์„ธ ๋ฌถ์Œ๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์€ 60๊ณผ 100์ด๋‹ค. ์ด ๋‘˜์„ ๋น„๊ตํ•œ๋‹ค.

2. 60 vs 100 → 60 + 100 = 160, ๋น„๊ตํšŸ์ˆ˜๋Š” 160์ด๋‹ค. ๋‚จ์€ ๋ฌถ์Œ๋“ค์€ 160 120์ด๋‹ค. ๋‘ ๋ฌถ์Œ๋ฟ์ด๋‹ˆ ๋‘˜์„ ๋น„๊ตํ•œ๋‹ค.

3. 160 vs 120 → 160 + 120 = 280, ๋น„๊ตํšŸ์ˆ˜๋Š” 280์ด๋‹ค. ๋น„๊ตํ•  ๋ฌถ์Œ์ด ์—†์œผ๋ฏ€๋กœ ์ง€๊ธˆ๊นŒ์ง€ ๋น„๊ตํ•œ ํšŸ์ˆ˜๋ฅผ ๋”ํ•œ๋‹ค.

4. 60 + 160 + 280 = 500, ์ตœ์†Œ ๋น„๊ต ํšŸ์ˆ˜๋Š” 500์ด๋‹ค.


โœ“ ์šฐ์„ ์ˆœ์œ„ ํ ์‚ฌ์šฉ

 

1. ํด๋ž˜์Šค ์ž„ํฌํŠธ

from queue import PriorityQueue

2. ์šฐ์„ ์ˆœ์œ„ ํ ์ƒ์„ฑ

queue = PriorityQueue()
queue = PriorityQueue(maxmize = 10) #ํฌ๊ธฐ ์ง€์ •

3. ์šฐ์„ ์ˆœ์œ„ ํ์— ์›์†Œ ์ถ”๊ฐ€

queue.put(n)

4. ์šฐ์„ ์ˆœ์œ„ ํ ์›์†Œ ์‚ญ์ œ

queue.get() #๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

5. ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ((์šฐ์„ ์ˆœ์œ„, ๊ฐ’))

queue.put((1, 5))

queue.get()[1] #5๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

Solution

# 00:42 - 01:55 / 15:23 - 16:06

import sys
input = sys.stdin.readline

from queue import PriorityQueue #์šฐ์„ ์ˆœ์œ„ ํ ํด๋ž˜์Šค(queue = ๋‚ด์žฅ ๋ชจ๋“ˆ)
#์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ œ๊ฑฐ๋  ๋•Œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†๊ฒ ์ฃ ?

n = int(input())
card = [] #์นด๋“œ ๋ฌถ์Œ์„ ๋‹ด์„ ๋ฆฌ์ŠคํŠธ
for _ in range(n):
    card.append(int(input())) 

q = PriorityQueue() #์šฐ์„ ์ˆœ์œ„ ํ ์ƒ์„ฑ
#ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
#1. ํ์— ์นด๋“œ๋ฌถ์Œ์„ ๋ชจ๋‘ ๋„ฃ๊ธฐ
for i in card:
    q.put(i)
#2. ์ž‘์€ ๋ฌถ์Œ ๋‘ ๊ฐœ๋ฅผ ๋น„๊ต
res = 0 #์ถœ๋ ฅํ•  ๊ฒฐ๊ณผ
while q.qsize() > 1: #ํ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์ด 1์ผ ๋•Œ ๋”ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ•œ ๊ฐœ๊ฐ€ ๋‚จ์„ ๋•Œ๊นŒ์ง€๋งŒ ๋ฐ˜๋ณต
    x = q.get() #ํ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  x์— ์ €์žฅ
    sum = x + q.get() #๋‘ ๋ฌถ์Œ์„ ๋”ํ•œ๋‹ค.
    res += sum #๋”ํ•œ ๊ฐ’์„ ๊ฒฐ๊ณผ์— ์ €์žฅํ•œ๋‹ค.
    q.put(sum) #๋”ํ•œ ๊ฐ’์„ ๋‹ค์‹œ ํ์— ๋„ฃ๋Š”๋‹ค.
print(res)

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š” ๋๋‹ค. ์ฒ˜์Œ์—๋Š” ์ฃผ์–ด์ง„ ์˜ˆ์‹œ๋กœ๋งŒ ๋ด์„œ๋Š” ์ดํ•ด๊ฐ€ ๊ฐ„ ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ๋ณด๋‹ˆ ์ดํ•ดํ•œ ๊ฑฐ๋ž‘ ์ „ํ˜€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์™”๋‹ค. ๊ฐ€์žฅ ์ž‘์€ ๋”๋ฏธ๋ž‘ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๊ฑธ ๋ฌด์‹œํ•˜๊ณ  ๋”ํ•ด๊ฐ–๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ๋‹ค๋ฅธ ์‚ฌ๋žŒํ•œํ…Œ๋„ ๋ฌผ์–ด๋ณด๋ฉด์„œ ํ’€๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ํฌ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ’€์—ˆ๋Š”๋ฐ, ์–ด๋А ํ•œ ๋ถ„์ด ๋ฌธ์ œ ์„ค๋ช…์„ ์ž˜ ํ•ด์ฃผ์…”์„œ ์ž˜ ์ดํ•ดํ–ˆ๊ณ  ๋ฌธ์ œ๋„ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ฌธ์ œ๋Š” ์ž˜ ํ’€์–ด์„œ ๋‹คํ–‰์ธ ๋“ฏ ์‹ถ๋‹ค.

728x90

'๐Ÿงฉ Algorithm > [BOJ] Gold' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 1339๋ฒˆ : ๋‹จ์–ด ์ˆ˜ํ•™ (Python/Gold 4)  (0) 2023.07.13
BOJ 10026๋ฒˆ : ์ ๋ก ์ƒ‰์•ฝ (Python/Gold 5)  (1) 2023.05.14