์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ํฌ๋กค๋ง
- react
- ํ์ด์ฌ
- ๋ฐฑ์ค
- CSS
- ํ๋ก ํธ์๋
- javascript
- mongodb
- HTML
- ๋ ธ๋ง๋์ฝ๋
- ํ๋ก์ ํธ
- ๊ฐ๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- Python
- ๋ชจ๊ฐ์ฝ
- heapq
- ์ฝ๋ฉ
- KDT
- ๊ตญ๋น์ง์
- ํ ์ดํ๋ก์ ํธ
- JS
- node.js
- ๋๋ฆผ์ฝ๋ฉ
- ๊ทธ๋ฆฌ๋
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ฉํ ์คํธ
- error
- ์ฝ๋ฉ์ ํ
- fe
- Til
- Today
- Total
๐ฑ → ๐ณ
[๋ฐฑ์ค] 11000๋ฒ : ๊ฐ์์ค python ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/11000
๋ฌธ์ ์ ๋ณด
๋ฌธ์ ์ ํ ๋์ด๋ ๊ฑธ๋ฆฐ ์๊ฐ ์ค์ค๋ก ๊ตฌํ ์ฑ๊ณต
๊ทธ๋ฆฌ๋, ์ฐ์ ์์ ํ, ์๋ฃ๊ตฌ์กฐ, ์ ๋ ฌ | ๊ณจ๋5 | 1h | X |
์ค๊ณ ๋ฐฉ๋ฒ
๋ด๊ฐ ์ค๊ณํ๋ ๋ฐฉ๋ฒ
- input ๋ฐ์ ๊ฒ์ ์์์๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
- ์์์๊ฐ S, ๋ ์๊ฐ T list๋ฅผ ๋ฐ๋ก ์ ์ธ ํ ๋ค S๋ฅผ ๋๋ฉด์ T๊ฐ ์ด์ ์์ ์๊ฐ๋ค ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ด์ ๊ฐ์์ค์ ๊ณ์ ์ฌ์ฉํ๋๋ก ํจ
์ ๋ต ํ์ด ๋ฐฉ๋ฒ
โ ํ์ฌ ํ์์ค์์์ ํ์๊ฐ ๋๋๋ ์๊ฐ๋ณด๋ค ๋ค์ ํ์์ ์์์๊ฐ์ด ๋น ๋ฅด๋ฉด
ํ์์ค์ ํ๋ ์ถ๊ฐ๋ก ๊ฐ์คํ๋ค.
โก ํ์ฌ ํ์์ค์์ ํ์๊ฐ ๋๋๋ ์๊ฐ๋ณด๋ค ๋ค์ ํ์์ ์์์๊ฐ์ด ๋๋ฆฌ๋ฉด
ํ์ฌ ์กด์ฌํ๋ ํ์์ค์์ ์ด์ด์ ํ์ ๊ฐ์ต๊ฐ ๊ฐ๋ฅํ๋ค.
heap์ ์ ค ๋จผ์ ์์ํ๋ ๊ฐ์์ข ๋ฃ์๊ฐ์ pushํ๋ค.
๊ทธ๋ฆฌ๊ณ 1๋ฒ ์ธ๋ฑ์ค๋ถํฐ ~ n๋ฒ ์ธ๋ฑ์ค๊น์งํ์ฌ ์ธ๋ฑ์ค ๊ฐ์ ์์์๊ฐ์ด heap์์ ๋ฃจํธ๋ ธ๋ ๋ณด๋ค ์์ ๊ฒฝ์ฐ heap์ ๊ฐ์ ์ข ๋ฃ์๊ฐ์ push๋ฅผ ํ๋ค. ๊ฐ์ ์์ ์๊ฐ์ด heap ๋ฃจํธ๋ ธ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ญ์ ํ๊ณ ํ์ฌ ์ธ๋ฑ์ค ๊ฐ์ ์ข ๋ฃ์๊ฐ์ pushํด์ค๋ค.
heap์ ์ฝ์ ์ ํ๋ฉด ์ต์ํ์ ์ ์ง๋ฅผ ํ๋ฏ๋ก heap์์ 0 ๋ฒ์งธ ์ธ๋ฑ์ค๋ ๋ฌด์กฐ๊ฑด ๊ฐ์ฅ ์์๊ฐ์ ์ ์งํ๋ค. ์ฆ heap[0]์๋ ์ฌ์ฉ์ค์ธ ๊ฐ์์ค์์ ๊ฐ์ฅ ๋นจ๋ฆฌ ๋๋๋ ๊ฐ์ด ์ ์ฅ๋์ด์๋ค. heap[0] ์ ์ ์ฅ๋ ๊ฐ์ด ๊ฐ์ฅ๋นจ๋ฆฌ ๋๋๋ ๊ฐ์์ค ์ด๋ฏ๋ก ๊ฐ์๊ฐ ์์ํ๋ ์๊ฐ์ด ๋น ๋ฅผ ๊ฒฝ์ฐ์๋ heap[1],heap[2].. ์ ์ ์ฅ๋ ๊ฐ์์ค์ ์ด์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์์์๊ฐ < heap[0]์ผ ๊ฒฝ์ฐ์๋ ๋ฌด์กฐ๊ฑด ์ ๊ฐ์์ค์ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก heappush๋ฅผ ํด์ค๋ค. heap[0]๋ณด๋ค ๊ฐ์ ์์ ์๊ฐ์ด ํด ๊ฒฝ์ฐ์๋ heap[0] ๊ฐ์์ค์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก heap[0]์ ์ญ์ ํด์ฃผ๊ณ ํด๋น ๊ฐ์ ์ข ๋ฃ์๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. ์ด๋ ๊ฒ ๋ฐ๋ณตํ ๋ค์ heap์ ์ ์ฅ๋ ๊ธธ์ด๊ฐ ์ฌ์ฉํด์ผํ๋ ๊ฐ์์ค ๊ฐ์์ด๋ฏ๋ก ์ถ๋ ฅํ๋ฉด ์ ๋ต์ด๋ค.
์ฝ๋
๋ด ์ฝ๋(์๊ฐ์ด๊ณผ ๋ฐ์)
import sys
input = sys.stdin.readline
n = int(input())
cnt = 0
temp =[]
for _ in range(n):
time = list(map(int, input().split()))
temp.append(time)
# time[0] ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
# temp = sorted(temp, key=lambda x: x[0])
temp.sort(key=lambda x:x[0])
S = []
T = []
for i in temp:
S.append(i[0])
T.append(i[1])
for i in range(len(S)):
if i == 0:
cnt += 1
for j in range(i):
if T[j] <= S[i]:
cnt += 1
print(cnt)
์ ๋ต ์ฝ๋
import sys
import heapq
heap = []
input = sys.stdin.readline
n = int(input())
arr = []
for i in range(n):
a, b = map(int, input().split())
arr.append([a, b])
arr.sort(key=lambda x: x[0])
heapq.heappush(heap, arr[0][1]) #์ฒซ๋ฒ์งธ ๊ฐ์๊ฐ ๋๋๋ ์๊ฐ์ ๋ฃ์
for i in range(1, n):
if heap[0] > arr[i][0]:
heapq.heappush(heap, arr[i][1])
else:
heapq.heappop(heap)
heapq.heappush(heap, arr[i][1])
print(len(heap))
์๊ฐ ๋ณต์ก๋
$O(NlogN)$
heapq.heappush(pop)์ด nlogn์ ์๊ฐ๋ณต์ก๋ ๊ฐ์ง
์ด๋ ค์ ๋ ์
๋ด๊ฐ ์ฒ์์ ์๊ฐํ๋ ๋๋ก ์ฝ๋๋ฅผ ์ง๋ฉด for๋ฌธ์ด 2๋ฒ ์ค์ฒฉ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ ์ ๋ฐ์ ์๋ค
- ์ฐ์ ์์ ํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ๋ ๊น์ด ๊ณต๋ถ ํ์
- time[0] ๊ธฐ์ค์ผ๋ก sortํ๊ณ ์ถ์ผ๋ฉด ๊ทธ๋ฅ time.sort()ํด๋ ๋๋ ๋ฏ ์ด๋ฐ ๊ธฐ์ด์ ์ธ ๊ฒ๋ ๋ ๊ผผ๊ผผํ๊ฒ ๊ณต๋ถํ ๊ฒ
- ์ฒ์์ ๋ฌธ์ ๋ฅผ ์ ํ์ ๋ ๊ผญ ์๊ฐ๋ณต์ก๋ ์๊ฐํ๊ธฐ ๋ฐ๋ณต๋ฌธ์ ๋ ๋ฒ ์ด์ ์ค์ฒฉ์ํค๋ ํ์ด๋ ์ต๋ํ ํผํ๊ธฐ
์ฐธ๊ณ ์๋ฃ
https://velog.io/@slbin-park/๋ฐฑ์ค-11000๋ฒ-๊ฐ์์ค-๋ฐฐ์ -ํ์ด์ฌ
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ํ ์๋ฃ๊ตฌ์กฐ / ํํ(heapq) / ํ์ด์ฌ์์ heapq ๋ชจ๋ ์ฌ์ฉ (1) | 2023.05.30 |
---|---|
[๋ฐฑ์ค] 13458๋ฒ: ์ํ ๊ฐ๋ python (0) | 2023.01.11 |
[๋ฐฑ์ค] 11399๋ฒ: ATM - python (0) | 2023.01.09 |
[๋ฐฑ์ค] 10866๋ฒ: ๋ฑ python (0) | 2023.01.08 |
[๋ฐฑ์ค] 11047๋ฒ: ๋์ 0 python (0) | 2023.01.08 |