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 ๋ ์ฐ์ ์์ํ๊ฐ ์๋๋ผ ๊ทธ๋ฅ ๋ฐฐ์ด๋ก๋ ์ฌ์ฉํ ์ ์์ง ์์๊นํด์ ์๋ํด๋ดค๋๋ฐ ์ด๊น์์ด ์๊ฐ์ด๊ณผ ๊ฐ ๋ฐ์ํ๋๋ผ๊ตฌ์ ใ
์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฑธ ์์ง ๋ง์์ฃผ์ธ์ !!
์์ฒญ๋ ์๊ฐ์ด๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ํ์ ํต๊ณผ ๐ญ
'๐ฉ๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18310๋ฒ ์ํ ๋ (Python) (0) | 2024.08.20 |
---|---|
[๋ฐฑ์ค] 15904๋ฒ UCPC๋ ๋ฌด์์ ์ฝ์์ผ๊น ? (Python) (0) | 2024.08.06 |
[๋ฐฑ์ค] 1439๋ฒ ๋ค์ง๊ธฐ (Python) (0) | 2024.07.25 |
[๋ฐฑ์ค] 1715๋ฒ ์นด๋ ์ ๋ ฌํ๊ธฐ (Python) (2) | 2024.07.24 |
[๋ฐฑ์ค] 1789๋ฒ ์๋ค์ ํฉ (Python) (0) | 2024.07.23 |