โ๋ฌธ์
https://www.acmicpc.net/problem/1202
๋ฉ๋ชจ๋ฆฌ: 107448 KB, ์๊ฐ: 1752 ms
์๋ฃ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ฐ์ ์์ ํ, ์ ๋ ฌ
์ธ๊ณ์ ์ธ ๋๋ ์๋์ด๋ ๋ณด์์ ์ ํธ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
์๋์ด๊ฐ ํธ ๋ณด์์ ์๋ ๋ณด์์ด ์ด N๊ฐ ์๋ค. ๊ฐ ๋ณด์์ ๋ฌด๊ฒ Mi์ ๊ฐ๊ฒฉ Vi๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์๋์ด๋ ๊ฐ๋ฐฉ์ K๊ฐ ๊ฐ์ง๊ณ ์๊ณ , ๊ฐ ๊ฐ๋ฐฉ์ ๋ด์ ์ ์๋ ์ต๋ ๋ฌด๊ฒ๋ Ci์ด๋ค. ๊ฐ๋ฐฉ์๋ ์ต๋ ํ ๊ฐ์ ๋ณด์๋ง ๋ฃ์ ์ ์๋ค.
์๋์ด๊ฐ ํ์น ์ ์๋ ๋ณด์์ ์ต๋ ๊ฐ๊ฒฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์ฒ์์๋ ๊ฐ ๋ณด์์ ์ต๋ํ์ผ๋ก ๋ฆฌ์คํธ์ ๋ฃ๊ณ , ๊ฐ๋ฐฉ์ ๋ฌด๊ฑฐ์ด ์์ผ๋ก ์ ๋ ฌํ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ฐ ๊ฒฝ์ฐ ๋ณด์์ด ๋ฌด๊ฒ๋๋ก ์ ๋ ฌ๋์ด์๋ ๊ฒ์ด ์๋๊ธฐ์ ํฐ ๊ฐ๋ฐฉ์ ์ด๋ฏธ ๋ณด์์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ์ฐ์ ์์๊ฐ ๋๋ฒ์งธ์ธ ๋ณด์์ด ์คํ๋ ค ๋ชป ๋ค์ด๊ฐ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒผ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ฐ ๋ณด์์ ๋ฌด๊ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ๊ฐ๋ฐฉ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์๋ค. ๊ฐ ๋ณด์์ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋์ง ํ์ธํ๋ฉด ๊ฐ๋ฅํ ๋ณด์๋ค์ possible ๋ฆฌ์คํธ์ ์ต๋ํ์ผ๋ก ๋ฃ๋๋ค. ์ด ๋, ํด๋น ๋ณด์๋ค์ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๋ณด์๋ค๋ก ์ฐ๋ฆฌ๋ ๋ณด์์ ๊ฐ์น๋ง ๋ฆฌ์คํธ์ ๋ฃ์ผ๋ฉด ๋๋ค. ๋ ์ด์ ํด๋น ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๋ณด์์ด ์๋ค๋ฉด ๊ฐ๋ฅํ ๋ณด์๋ค ์ค์์ ๊ฐ์ฅ ๊ฐ์น๊ฐ ํฐ ๋ณด์์ res์ ๋ํ๋ฉด ๋๋ค. ๋ ์ด์ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๋ณด์์ด ์๊ณ ๋จ์ ๋ณด์๋ ์๋ค๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋์ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ป์ฝ๋
import sys
from heapq import heappush, heappop
input = sys.stdin.readline
N, K = map(int, input().split())
jewelry = [list(map(int, input().split())) for _ in range(N)]
jewelry.sort()
bags = [int(input()) for _ in range(K)]
bags.sort()
possible = []
res = 0
for b in bags:
while jewelry and jewelry[0][0] <= b:
heappush(possible, -heappop(jewelry)[1])
if possible:
res += -heappop(possible)
elif not jewelry:
break
print(res)
๐ํ๊ธฐ
์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ ๋ฌธ์ ๋ ํ ์ ์์ง๋ง ์์ง ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํด์ผ ํ๋์ง๋ ๊ฐ์ ์ก์ง ๋ชปํ ๊ฒ ๊ฐ๋คใ
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์/Python - Gold2 (0) | 2025.02.26 |
---|---|
[๋ฐฑ์ค] 1715. ์นด๋ ์ ๋ ฌํ๊ธฐ/Python - Gold4 (0) | 2025.02.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ]์บ์/Python - Lv.2 (0) | 2025.02.21 |
[๋ฐฑ์ค] 18870. ์ขํ ์์ถ/Python - Silver2 (0) | 2025.02.19 |
[๋ฐฑ์ค] 2206. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ/Python - Gold 3 (0) | 2025.02.12 |