๋ฌธ์
์์ฑ ์กฐ๊ต๋ ๋ํธ์๊ฒ N๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฃผ๊ณ ์, ๊ฐ๊ฐ์ ๋ฌธ์ ๋ฅผ ํ์์ ๋ ์ปต๋ผ๋ฉด์ ๋ช ๊ฐ ์ค ๊ฒ์ธ์ง ์ ์ ํ์๋ค. ํ์ง๋ง ๋ํธ์ ์ฐ๋ฅผ๋ฏํ ์์ ๊ฐ์ ์์ฌํ ์์ฑ ์กฐ๊ต๋ ๊ฐ๊ฐ์ ๋ฌธ์ ์ ๋ํด ๋ฐ๋๋ผ์ธ์ ์ ํ์๋ค.
๋ฌธ์ ๋ฒํธ๋ฐ๋๋ผ์ธ์ปต๋ผ๋ฉด ์
๋ฌธ์ ๋ฒํธ | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
๋ฐ๋๋ผ์ธ | 1 | 1 | 3 | 3 | 2 | 2 | 6 |
์ปต๋ผ๋ฉด ์ | 6 | 7 | 2 | 1 | 4 | 5 | 1 |
์์ ๊ฐ์ ์ํฉ์์ ๋ํธ๊ฐ 2, 6, 3, 1, 7, 5, 4 ์์ผ๋ก ์์ ๋ฅผ ํ๋ค๋ฉด 2, 6, 3, 7๋ฒ ๋ฌธ์ ๋ฅผ ์๊ฐ ๋ด์ ํ์ด ์ด 15๊ฐ์ ์ปต๋ผ๋ฉด์ ๋ฐ์ ์ ์๋ค.
๋ฌธ์ ๋ ๋ํธ๊ฐ ๋ฐ์ ์ ์๋ ์ต๋ ์ปต๋ผ๋ฉด ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค. ์์ ์์์๋ 15๊ฐ ์ต๋์ด๋ค.
๋ฌธ์ ๋ฅผ ํธ๋๋ฐ๋ ๋จ์ ์๊ฐ 1์ด ๊ฑธ๋ฆฌ๋ฉฐ, ๊ฐ ๋ฌธ์ ์ ๋ฐ๋๋ผ์ธ์ N์ดํ์ ์์ฐ์์ด๋ค. ๋, ๊ฐ ๋ฌธ์ ๋ฅผ ํ ๋ ๋ฐ์ ์ ์๋ ์ปต๋ผ๋ฉด ์์ ์ต๋๋ก ๋ฐ์ ์ ์๋ ์ปต๋ผ๋ฉด ์๋ ๋ชจ๋ 231๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ์์ ์ ๊ฐ์ N (1 ≤ N ≤ 200,000)์ด ๋ค์ด์จ๋ค. ๋ค์ ์ค๋ถํฐ N+1๋ฒ์งธ ์ค๊น์ง i+1๋ฒ์งธ ์ค์ i๋ฒ์งธ ๋ฌธ์ ์ ๋ํ ๋ฐ๋๋ผ์ธ๊ณผ ํ๋ฉด ๋ฐ์ ์ ์๋ ์ปต๋ผ๋ฉด ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ๋ํธ๊ฐ ๋ฐ์ ์ ์๋ ์ต๋ ์ปต๋ผ๋ฉด ์๋ฅผ ์ถ๋ ฅํ๋ค.
https://www.acmicpc.net/problem/1781
๐กํ์ด ๋ฐ ์ฝ๋
import heapq
n = int(input())
data, hq = [], []
for _ in range(n):
data.append(tuple(map(int, input().split())))
data.sort(key=lambda x: (x[0], -x[1]))
time, result= 1, 0
for d, c in data:
if time <= d:
result += c
heapq.heappush(hq, (c, time))
time += 1
else:
if hq:
min_tmp = heapq.heappop(hq)
if min_tmp[0] < c:
result += (c - min_tmp[0])
heapq.heappush(hq, (c, min_tmp[1]))
else:
heapq.heappush(hq, min_tmp)
print(result)
์ฌ๋ฌ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์๋ ๋ฌธ์ ์ด๋ค. ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ '์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ'๋ฅผ ํ์ธํ๊ณ ์์ผ ๊นจ๋ฌ์๋ค.
๊ฐ์ฅ ์ค์ํ ํฌ์ธํธ๋ ๋ ๊ฐ์ง์ธ ๊ฒ ๊ฐ๋ค.
1. ๋ฐ๋๋ผ์ธ์ด ๋น ๋ฅธ ๋ฌธ์ ๋ถํฐ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. -> sort ์ฌ์ฉ
2. ๋ฐ๋๋ผ์ธ์ด ์ง๋ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๊ทธ๋ฅ ์ง๋์น๋ ๊ฒ์ด ์๋๋ผ, ์ด์ ๊น์ง ํผ ๋ฌธ์ ์ค ์ปต๋ผ๋ฉด ์๊ฐ ๊ฐ์ฅ ์ ์๋ ๋ฌธ์ ์ ํด๋น ๋ฌธ์ ๋ฅผ ๋น๊ตํด ํ์์ ์ปต๋ผ๋ฉด ์๊ฐ ๋ ๋ง๋ค๋ฉด ์ด์ ์ ํผ ๋ฌธ์ ๋ฅผ ํด๋น ๋ฌธ์ ๋ก ๋์ฒดํ๋ค. -> heapq ์ฌ์ฉ
'Algorithm > ๐ Baekjoon Judge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 12904๋ฒ A์ B - ํ์ด์ฌ(Python) (0) | 2022.07.06 |
---|---|
[BOJ] ๋ฐฑ์ค 3109๋ฒ ๋นต์ง - ํ์ด์ฌ(Python) (0) | 2022.07.06 |
[BOJ] ๋ฐฑ์ค 8980๋ฒ ํ๋ฐฐ - ํ์ด์ฌ(Python) (0) | 2022.07.04 |
[BOJ] ๋ฐฑ์ค 15683๋ฒ ๊ฐ์ - ํ์ด์ฌ(Python) (0) | 2022.04.04 |
[BOJ] ๋ฐฑ์ค 14499๋ฒ ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ - ํ์ด์ฌ(Python) (0) | 2022.04.02 |