๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€] 1202๋ฒˆ ๋ณด์„ ๋„๋‘‘ (Python)

mallin 2024. 8. 1. 17:42

https://www.acmicpc.net/problem/1213

๐Ÿ“Œ ๋ฌธ์ œ

์„ธ๊ณ„์ ์ธ ๋„๋‘‘ ์ƒ๋•์ด๋Š” ๋ณด์„์ ์„ ํ„ธ๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค.

์ƒ๋•์ด๊ฐ€ ํ„ธ ๋ณด์„์ ์—๋Š” ๋ณด์„์ด ์ด N๊ฐœ ์žˆ๋‹ค. ๊ฐ ๋ณด์„์€ ๋ฌด๊ฒŒ Mi์™€ ๊ฐ€๊ฒฉ Vi๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ƒ๋•์ด๋Š” ๊ฐ€๋ฐฉ์„ K๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๊ฐ ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฌด๊ฒŒ๋Š” Ci์ด๋‹ค. ๊ฐ€๋ฐฉ์—๋Š” ์ตœ๋Œ€ ํ•œ ๊ฐœ์˜ ๋ณด์„๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

์ƒ๋•์ด๊ฐ€ ํ›”์น  ์ˆ˜ ์žˆ๋Š” ๋ณด์„์˜ ์ตœ๋Œ€ ๊ฐ€๊ฒฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ“Œ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, K ≤ 300,000)

๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๊ฐ ๋ณด์„์˜ ์ •๋ณด Mi์™€ Vi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Mi, Vi ≤ 1,000,000)

๋‹ค์Œ K๊ฐœ ์ค„์—๋Š” ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฌด๊ฒŒ Ci๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ci ≤ 100,000,000)

๋ชจ๋“  ์ˆซ์ž๋Š” ์–‘์˜ ์ •์ˆ˜์ด๋‹ค.

 

๐Ÿ“Œ ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ƒ๋•์ด๊ฐ€ ํ›”์น  ์ˆ˜ ์žˆ๋Š” ๋ณด์„ ๊ฐ€๊ฒฉ์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 


๐Ÿ“Œ ํ’€์ด ๋ฐฉ์‹ 

์ฒซ ๊ณจ๋“œ2 ๋ฌธ์ œ !!

ํ•œ 3์‹œ๊ฐ„ ๊ณ ๋ฏผํ•˜๊ณ  ... ๋„์ €ํžˆ ์•ˆ ํ’€๋ ค์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค ๋ธ”๋กœ๊ทธ๋ณด๊ณ  ํžŒํŠธ์ข€ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค ,, 

 

๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ํ‚ค ํฌ์ธํŠธ๋Š”

๐Ÿ”‘ ์ตœ๋Œ€ ๋ฌด๊ฒŒ๊ฐ€ ๋‚ฎ์€ ๊ฐ€๋ฐฉ๋ถ€ํ„ฐ ๋ณด์„์„ ์ฑ„์›Œ์ค€๋‹ค

๐Ÿ”‘ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์„ ๊ตฌํ•  ๋•Œ์—๋Š” ๋‚ฎ์€ ๋ฌด๊ฒŒ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ

     ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์—์„œ ๊ฐ€์žฅ ๊ฐ’์ง„ ๋ณด์„์„ ๊ตฌํ•  ๋•Œ์—๋Š” ๋†’์€ ๊ฐ€๊ฒฉ์„ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

๐Ÿ”‘ ์ด์ „ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์€ ๋‹ค์Œ ๊ฐ€๋ฐฉ์—๋„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค (๋ฌด๊ฒŒ ๋‚ฎ์€ ๊ฐ€๋ฐฉ๋ถ€ํ„ฐ ๋ณด์„์„ ์ฑ„์›Œ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—)

 

์ด์ •๋„ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์ด 3๋ฒˆ์งธ ํ‚คํฌ์ธํŠธ์ธ๋ฐ์š”. 

์ด์ „ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์€ ๋‹ค์Œ ๊ฐ€๋ฐฉ์—๋„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ์ž…๋ ฅ๋ฐ›์€ ๋ณด์„ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ

๋”ฐ๋กœ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค :~)

 

Q. ๋†’์€ ๊ฐ€๊ฒฉ์„ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š” ?

A. ๋†’์€ ๊ฐ€๊ฒฉ์„ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’์— - ๋ฅผ ๋ถ™์—ฌ์„œ ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ์ฝ”๋“œ

import sys
import heapq
input = sys.stdin.readline

# ๋ณด์„ ๊ฐœ์ˆ˜ = n, ๊ฐ€๋ฐฉ ๊ฐœ์ˆ˜ = k 
n, k = map(int, input().split())
jewels = []

for _ in range(n):
    m, v = map(int, input().split())
    heapq.heappush(jewels, (m, v))

bags = [int(input()) for _ in range(k)]
bags.sort()

temp = []
result = 0
# ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€๋ฐฉ๋ถ€ํ„ฐ ์ฑ„์›Œ์ค€๋‹ค
for bag in bags:
    # ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค์„ temp ๋ฐฐ์—ด์— ์ €์žฅํ•ด์ค€๋‹ค
    while len(jewels) > 0 and jewels[0][0] <= bag:
        j = heapq.heappop(jewels)
        heapq.heappush(temp, (-j[1], j[0]))

    # ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค ์ค‘ 
    # ๊ฐ€์žฅ ๊ฐ’์–ด์น˜๊ฐ€ ํฐ ๋ณด์„์„ ๊ฐ€๋ฐฉ์— ๋„ฃ์–ด์ค€๋‹ค
    if len(temp) > 0:
        k = heapq.heappop(temp)
        result += -k[0]
    
    # ๋งŒ์ผ ๋ณด์„๋„ ์—†๊ณ , ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋„ ์—†์œผ๋ฉด
    # ํ”„๋กœ๊ทธ๋žจ์„ ๋๋‚ธ๋‹ค
    if len(temp) == 0 and len(jewels) == 0:
        break
    
print(result)

 

jeweles ๋Š” ์šฐ์„ ์ˆœ์œ„ํ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ๋ฐฐ์—ด๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒํ•ด์„œ ์‹œ๋„ํ•ด๋ดค๋Š”๋ฐ ์–ด๊น€์—†์ด ์‹œ๊ฐ„์ดˆ๊ณผ ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๊ตฌ์š” ใ…œ

์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ ์žŠ์ง€ ๋ง์•„์ฃผ์„ธ์š” !!

 

์—„์ฒญ๋‚œ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ํ›„์— ํ†ต๊ณผ ๐Ÿ˜ญ