ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ณด์์ ์ ๊ฐ ๋ณด์์ ๋ํ ๋ฌด๊ฒ์ ๊ฐ๊ฒฉ์ด ์ฃผ์ด์ง๋ค. ๋ํ, K๊ฐ์ ๊ฐ๋ฐฉ์ ๊ฐ๊ฐ ๋ด์ ์ ์๋ ๋ฌด๊ฒ๊ฐ ์ ํด์ ธ ์๋ค. ์ด๋ ํ์น ์ ์๋ ๋ณด์์ ์ต๋ ๊ฐ๊ฒฉ์ ๊ตฌํ๋ ๊ฒ์ด๋ค. ์ด ๋ฌธ์ ๋ ํ๋ฒํ ๋ฐฐ๋ญ๊ณผ ๋ฌ๋ฆฌ, heap์ ์ด์ฉํ์ฌ ํธ๋ ๋ฌธ์ ์ด๋ค. heap์ ์ฑ์ง๊ณผ Python์์ ์ฌ์ฉ๋๋ `heapq`๋ฅผ ์ดํดํ๊ณ ์๋ค๋ฉด ์ด๋ ต์ง ์๊ฒ ํ ์ ์๋ค.
- ๋ณด์๊ณผ ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ ์์ผ๋ก ์ ๋ ฌํ๋ค.
- ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ ์ ํ๋ณด๋ค ๋ณด์์ ๋ฌด๊ฒ๊ฐ ์๋ค๋ฉด, heap์ ๋ฃ๋๋ค.
- heapify๋ฅผ ํ ๋, ์ต๋ ํ์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ฏ๋ก ๋ฌด๊ฒ๋ฅผ ์์๋ก ํ์ฌ root node์ ๊ฐ์ด ์ต๋ ๊ฐ์ด ๋๋๋ก ํ๋ค.
- ์ฆ, ๋ฌด๊ฒ ์ ํ์ด ๊ฐ์ฅ ์์ ๊ฐ๋ฐฉ๋ถํฐ ๋ฌด๊ฒ๊ฐ ๊ฐ์ฅ ์์ ๋ณด์๋ถํฐ ๋ค์ด๊ฐ๋์ง ํ์ธํ์ฌ ์ต๋ ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ค.
์ฝ๋
from sys import stdin
import heapq
if __name__ == "__main__":
WEIGHT, PRICE = 0, 1
n, k = map(int, stdin.readline().split())
gem = sorted([list(map(int, stdin.readline().split())) for _ in range(n)])
bag = sorted(int(stdin.readline()) for _ in range(k))
heap = []
cur_gem = answer = 0
for weight_limit in bag:
while cur_gem < n and weight_limit >= gem[cur_gem][WEIGHT]:
# ์ต๋ ํ์ ๋ง๋ค๊ธฐ ์ํด ์์๋ก.
heapq.heappush(heap, -gem[cur_gem][PRICE])
cur_gem += 1
if heap:
answer += -heapq.heappop(heap)
print(answer)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 12015 ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด 2 (0) | 2020.09.07 |
---|---|
๋ฐฑ์ค: 2109 ์ํ๊ฐ์ฐ (0) | 2020.09.07 |
๋ฐฑ์ค: 1080 ํ๋ ฌ (0) | 2020.09.06 |
๋ฐฑ์ค: 11399 ATM (0) | 2020.09.05 |
๋ฐฑ์ค: 11047 ๋์ 0 (0) | 2020.09.05 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ