https://www.acmicpc.net/problem/1202
์์ด๋์ด
1. ๋ณด์์ ๊ฐ๋ฐฉ์ ์ด๋ป๊ฒ ๋ด์ ๊ฑด๊ฐ.
- ๋จ์ํ ์ด์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋น๊ตํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋๋ค.
- ๋ค์ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๋ฌธ์ ์ ์๋ ํํธ๋ฅผ ๋ณด๊ณ ๊ฐ์ ์ก์๋ค.
- ๋จผ์ ๋ณด์ ๋ฆฌ์คํธ์ ๊ฐ๋ฐฉ ๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ
- ๊ฐ ๊ฐ๋ฐฉ์ ๊ธฐ์ค์ผ๋ก ๋ณด์์ด ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋์ง ํ์ธํ๋ค.
- ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๋ณด์ ์ค ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๊ฑธ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
2. ์๊ฐ ๋จ์ถ
- ๊ทผ๋ฐ ๊ทธ๋ฅ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ฑํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๋ฐ์ํ๋ค.
- ๊ฐ์ฅ ๊ฐ์น๊ฐ ํฐ ๊ฒ๋ง ๋ฝ์์ฃผ๋ฉด ๋๋๊น ์ต๋ ํ์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
์ ์ฒด ์ฝ๋
import sys
import heapq
N, K = map(int,input().split())
jewel_list = []
pocket_list = []
for _ in range(N):
jewel_list.append([int(x) for x in sys.stdin.readline().rstrip().split()])
for _ in range(K):
pocket_list.append(int(sys.stdin.readline().rstrip()))
jewel_list.sort()
pocket_list.sort()
ans = 0
can_put_in = []
for pocket in pocket_list:
while jewel_list:
if pocket >= jewel_list[0][0]:
heapq.heappush(can_put_in, -jewel_list[0][1])
heapq.heappop(jewel_list)
else:
break
if can_put_in:
ans += -heapq.heappop(can_put_in)
else:
if not jewel_list:
break
print(ans)
์ฝ๋ ์ค๋ช
for _ in range(N):
jewel_list.append([int(x) for x in sys.stdin.readline().rstrip().split()])
for _ in range(K):
pocket_list.append(int(sys.stdin.readline().rstrip()))
jewel_list.sort()
pocket_list.sort()
๋จผ์ ๋ณด์๊ณผ ๊ฐ๋ฐฉ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ๋ ๋ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ค๋ค.
ans = 0
can_put_in = []
for pocket in pocket_list:
while jewel_list:
if pocket >= jewel_list[0][0]:
heapq.heappush(can_put_in, -jewel_list[0][1])
heapq.heappop(jewel_list)
else:
break
if can_put_in:
ans += -heapq.heappop(can_put_in)
else:
if not jewel_list:
break
print(ans)
๊ฐ๋ฐฉ์ด ์์ ์์๋๋ก(์ด๋ฏธ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ) ๋ณด์์ด ๋ค์ด๊ฐ๋์ง ํ์ธํด๋ณธ๋ค.
๊ฐ๋ฐฉ ํ์ฉ ๋ฌด๊ฒ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ณด์๋ค์ can_put_in๋ฆฌ์คํธ์ ๋ฃ์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ jewel_list์์ ๋ณด์์ ๋นผ์ค๋ค.
๋์ค์ ๋ณด์์ด ๊ฐ๋ฐฉ์ ๋ฃ๋ ๊ฒ ๋ถ๊ฐ๋ฅํ๋ฉด break ํด์ค๋ค.
์ดํ can_put_in ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ง ์์ผ๋ฉด pop ํด์ค๋ค.
can_put_in๋ฆฌ์คํธ๋ ์ต๋ ํ๊ณผ ๊ฐ์ ํํ์ด๋ฏ๋ก ์ฒ์์ ์๋ ๊ฐ์ด ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ด๋ค.
can_put_in ๋ฆฌ์คํธ๋ ๋น์ด์๊ณ jewel_list๋ ๋น์ด์์ผ๋ฉด break ํด์ค๋ค.(๋ ์ด์ ๋ฃ์ ๊ฒ ์๋ค๋ ๋ป)
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 12100 2048(easy) (python ํ์ด์ฌ) (0) | 2022.07.25 |
---|---|
[๋ฐฑ์ค] 15654 N๊ณผ M(5) (python ํ์ด์ฌ) (0) | 2022.07.13 |
[๋ฐฑ์ค] 13913 ์จ๋ฐ๊ผญ์ง 4 (python ํ์ด์ฌ) (0) | 2022.07.10 |
[๋ฐฑ์ค] 12851 ์จ๋ฐ๊ผญ์ง 2 (python ํ์ด์ฌ) (0) | 2022.07.10 |
[๋ฐฑ์ค] 1043 ๊ฑฐ์ง๋ง (python ํ์ด์ฌ) (0) | 2022.07.09 |