2022. 1. 4. 21:06ใ๐ฑ Algorithm/Greedy
์ ๋ต ์ฝ๋
from sys import stdin
import heapq
read = stdin.readline
N = int(read())
heap = []
result = []
for _ in range(N):
a, b = map(int, read().split())
result.append((a, b))
result.sort() # time ์ ๋ ฌ์ํ
heapq.heappush(heap, result[0][1]) # ์ฒซ๋ฒ์งธ ์์
๋๋๋ ์๊ฐ๋ถํฐ ๋ค์ด๊ฐ ์๋ค.
for i in range(1, N):
if heap[0] > result[i][0]: # ์ ๋ชป๋ค์ด๊ฐ
heapq.heappush(heap, result[i][1])
else: # ๋ค์ด๊ฐ ์ ์์ด
heapq.heappop(heap)
heapq.heappush(heap, result[i][1])
print(len(heap))
์ค๋ต ์ฝ๋ (์๊ฐ๋ณต์ก๋ X)
๋ฌธ์ ์์ N์ด ์ต๋ 200,000๊น์ง ์น์์ ์ ์๋ค๊ณ ํ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ผ๋ก๋ ๋ต์ ์ ๊ทผํ ์ ์๋ค.
ํ๋ฒ์ for ๋ฌธ์ผ๋ก ๋๋ด์ผํ๋ค.
๋๋ ๊ธฐ๊ป heapq ๋ก heap ์ ๋ง๋ค์ด๋๊ณ , ๊ทธ ๋ด๋ถ์์ for ๋ฌธ์ ํ๋ฒ ๋ ๋๋ ธ๋ค.
heap[0] ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ตณ์ด heapq.heappop()์ ํ์ง ์๋๋ผ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ด๊ฐ ์ํ๋ ๊ฐ์ ๋ํ๋ด์ด ๋น๊ตํ ์ ์๋ค.
-
while heap ์ ์กฐ๊ฑด์ผ๋ก ํ์ฌ, heap ์ ๋ชจ๋ ์์งํ ๋๊น์ง ๋น๊ต๋ฅผ ์งํํ๋ค. ๊ทธ๋ฌ๊ณ ์ result ๋ฆฌ์คํธ์ ๊ธธ์ด๋ก ๋ต์ ๊ตฌํ๋ คํ๋ค.
๋ฐ๋ฉด ์ ๋ต ์ฝ๋์์ heap ์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ต ์ฝ๋๋ฅผ ๊ตฌํ๋ค. ์ด ๋ถ๋ถ์ด ์ ๋ต๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์๋ค.
from sys import stdin
import heapq
read = stdin.readline
N = int(read())
heap = []
result = []
for _ in range(N):
a, b = map(int, read().split())
heapq.heappush(heap, (a, b))
start, end = heapq.heappop(heap)
result.append([end])
while heap:
pops = heapq.heappop(heap)
for i in range(len(result)):
if result[i][-1] <= pops[0]:
result[i].append(pops[1])
break
else:
result.append([pops[1]])
print(len(result))
'๐ฑ Algorithm > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 12845 ๋ชจ๋์ ๋ง๋ธ ํ์ด์ฌ (0) | 2023.01.20 |
---|---|
๋ฐฑ์ค 1455 ๋ค์ง๊ธฐ ํ์ด์ฌ (0) | 2023.01.11 |
๋ฐฑ์ค ๋ฌผ๋ณ 1052๋ฒ ํ์ด์ฌ (0) | 2022.07.18 |
๋ฐฑ์ค 1213 ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ ํ์ด์ฌ (0) | 2022.07.05 |
๋ฐฑ์ค 1931 ํ์ด์ฌ (0) | 2022.01.05 |