์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- SSE
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- ๋จ์ํ ์คํธ
- ์น๊ฐ๋ฐ๊ธฐ๋ก
- ์ฐ์ ์์ํ
- ์น๊ฐ๋ฐ
- ๋ฐฑ์คํ์ด
- ๋ฐฑ์ค1436
- spring
- ์ฝ๋ฉํ ์คํธ
- ChatGPT
- ์ฝ๋ฉ
- ๋ฐฑ์๋
- ๊ทธ๋ฆฌ๋
- ๊ฐ๋ฐ์
- ์ปด๊ณต
- ๋ฐฑ์ค
- ์ปด๊ณต์
- ์คํ๋ง
- ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- ์ดํญ๊ณ์
- ๋ชจ๋ฐ์ผ์ฑํ๋ก๊ทธ๋๋ฐ
- ํ๋ก ํธ์ค๋
- ํ๋ก๊ทธ๋๋ฐ
- ์๋ฃ๊ตฌ์กฐ
- ๋ฆฌ์กํธ
- boj11653
- ์ปดํจํฐ๊ณตํ
- Today
- Total
๐ป๐ญ๐ง๐
BOJ 1781 : ์ปต๋ผ๋ฉด (Python) ๋ณธ๋ฌธ
๋ฌธ์
https://www.acmicpc.net/problem/1781
1781๋ฒ: ์ปต๋ผ๋ฉด
์์ฑ ์กฐ๊ต๋ ๋ํธ์๊ฒ N๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฃผ๊ณ ์, ๊ฐ๊ฐ์ ๋ฌธ์ ๋ฅผ ํ์์ ๋ ์ปต๋ผ๋ฉด์ ๋ช ๊ฐ ์ค ๊ฒ์ธ์ง ์ ์ ํ์๋ค. ํ์ง๋ง ๋ํธ์ ์ฐ๋ฅผ๋ฏํ ์์ ๊ฐ์ ์์ฌํ ์์ฑ ์กฐ๊ต๋ ๊ฐ๊ฐ์ ๋ฌธ์ ์ ๋ํด ๋ฐ๋๋ผ
www.acmicpc.net
์ฝ๋
import heapq
import sys
input = sys.stdin.readline
array = []
for _ in range(n):
deadline, ramen = map(int, input().split())
array.append((deadline, ramen))
array.sort()
queue = []
for i in array:
heapq.heappush(queue,i[1]) #ํ์ ์ปต๋ผ๋ฉด ์ ์ถ๊ฐ
if i[0] < len(queue): #๋ฐ๋๋ผ์ธ์ด queue์ ๊ธธ์ด๋ณด๋ค ์๋ค๋ฉด
heapq.heappop(queue)
print(sum(queue))
ํ์ด
๋ฐ๋๋ผ์ธ๊ณผ ์ปต๋ผ๋ฉด์๋ฅผ array๋ผ๋ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ array๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค. → ๋ฐ๋๋ผ์ธ์ด ์ฐจ๋ก๋๋ก ์ปค์ง ๊ฒ์ด๋ค.
๋ฐ๋ณต๋ฌธ์ ํตํด queue๋ผ๋ ํ์ ์ปต๋ผ๋ฉด ์๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ ๋ฐ๋๋ผ์ธ์ด queue์ ๊ธธ์ด๋ณด๋ค ์์ ๊ฒฝ์ฐ์, ์ฆ ์ด๋ฏธ queue์ ์๋ ๋ฌธ์ ๋ค์ ํธ๋ ๊ฒ๋ง์ผ๋ก ๋ฐ๋๋ผ์ธ์ ๋์ด์๋ ๊ฒฝ์ฐ์๋ heapq.heappop(queue)๋ฅผ ์ด์ฉํด์ queue์ ์๋ ๊ฐ์ฅ ์์ ์ปต๋ผ๋ฉด ์๋ฅผ ์์ค๋ค. ๊ฐ์ฅ ์ต๊ทผ์ ๋ด์ ์ปต๋ผ๋ฉด์๊ฐ ๊ฐ์ฅ ์์ผ๋ฉด queue์ ๋ฃ์๋ง์ ๋ฐ๋ก ๋น ์ง๋ ๊ฒ์ด๋ค. ๊ทธ๊ฒ ์๋๋ผ๋ฉด ๋ ์์ ๋ค๋ฅธ ์ปต๋ผ๋ฉด ์๋ฅผ ์์ ๋ ๊ฒ์ด๊ณ ์ด๋ ๊ฐ์ฅ ์ต๊ทผ์ ๋ด์ ์ปต๋ผ๋ฉด ์๊ฐ ๋ฐ๋๋ผ์ธ ๋ด์ ๋ค์ด์ฌ ์ ์๋๋ก ํ ์ ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ํธ๊ฐ ๋ฐ์ ์ ์๋ ์ต๋ ์ปต๋ผ๋ฉด ์๋ฅผ ๊ตฌํ ์ ์๋ค.
๊ธฐํ
์๋๋ ๋ฐ๋๋ผ์ธ์ ๊ธฐ์ค์ผ๋กํด์ ๋ฐ๋๋ผ์ธ์ด ํฐ ๋ฌธ์ ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ ์ง์ด๋ฃ๋๋ฐ ๊ทธ ์ค์์๋ ์ปต๋ผ๋ฉด ์๊ฐ ๋ง์ ๊ฒ์ ์ฐ์ ์ ์ผ๋ก ํ์ ๋ด์ ์ ์๋๋ก ํ๋ค.
๋ฐ๋๋ผ์ธ์ด ํ์ฌ ํ์ ๊ธธ์ด๋ณด๋ค ๊ธธ๋ค๋ฉด, ์ฆ ์์ง ํด๋น๋ฌธ์ ๋ฅผ ์ฃผ์ด์ง ๋ฐ๋๋ผ์ธ ๋ด์ ํ ์ ์๋ ์ํ๋ผ๋ฉด ํ์ ๋ด๊ณ ,
๋ฐ๋๋ผ์ธ์ด ํ์ฌ ํ์ ๊ธธ์ด๋ณด๋ค ์งง๋ค๋ฉด, ์ฆ ํด๋น๋ฌธ์ ๋ฅผ ์ฃผ์ด์ง ๋ฐ๋๋ผ์ธ ๋ด์ ํ ์ ์๋ ์ํ๋ผ๋ฉด ํ์ ์๋ ๊ฐ์ฅ ์์ ์ปต๋ผ๋ฉด์์ ํด๋น ์ปต๋ผ๋ฉด์๋ฅผ ๋น๊ตํด์ ํด๋น ์ปต๋ผ๋ฉด ์๊ฐ ๋ ํฌ๋ค๋ฉด ๊ฐ์ฅ ์์ ์ปต๋ผ๋ฉด ์๋ฅผ ํ์์ ์์ ๊ณ ํด๋น ์ปต๋ผ๋ฉด ์๋ฅผ ๋ฃ์ด์ ์ต๋ํ ๋ง์ ์ปต๋ผ๋ฉด์ ๊ฐ์ง๋๋ก ์ฝ๋๋ฅผ ์งฐ๋ค.
์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์๋ค.
์ฝ๋
import sys
import heapq
input = sys.stdin.readline
n = int(input())
heap = []
array = []
for i in range(n):
array.append(list(map(int, input().split())))
array[i].reverse() #0์ด์ด ์ปต๋ผ๋ฉด์ , 1์ด์ด ๋ฐ๋๋ผ์ธ
array.sort(key=lambda x: (x[0], -x[1]))
for i in range(n):
if len(heap) < array[i][1]:
heapq.heappush(heap,[(-1)*array[i][0],array[i][1]])
elif abs(heap[0][0]) < array[i][0]:
heapq.heappop(heap)
heapq.heappush(heap,[(-1)*array[i][0],array[i][1]])
result = 0
while len(heap)!=0:
result += heapq.heappop(heap)[0]
print(abs(sum(heap)))
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ 1926 : ๊ทธ๋ฆผ (Python) (0) | 2023.03.13 |
---|---|
BOJ 10775 : ๊ณตํญ (Python) (0) | 2023.02.28 |
BOJ 2437 : ์ ์ธ (Python) (2) | 2023.02.28 |
BOJ 1339 : ๋จ์ด ์ํ (Python) (0) | 2023.02.20 |
BOJ 1092 : ๋ฐฐ (Python) (0) | 2023.02.20 |