λ°μν
Notice
Recent Posts
Recent Comments
Link
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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 |
Tags
- javascript
- μ€ν
- μλ°μ€ν¬λ¦½νΈ
- boj
- BFS
- μΉ΄μΉ΄μ€
- μΈνΌ
- κ·Έλν
- νλ‘κ·Έλλ¨Έμ€
- SWμλν μ€νΈ
- νν
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- μ½λ©ν μ€νΈ
- Blind
- SWEA
- algorithm
- SSAFY
- μλ£κ΅¬μ‘°
- AXZ
- μμ νμ
- λ°±μ€
- νμ΄μ¬
- Backjoon
- DFS
- sort
- Python
- μκ³ λ¦¬μ¦
- μ½ν
- μΌμ±
- DP
Archives
- Today
- Total
λ§μν
[python] λ°±μ€ - 12764. μΈμ§λ°©μ κ° μ€ν λ³Έλ¬Έ
Algorithm Problem/Python
[python] λ°±μ€ - 12764. μΈμ§λ°©μ κ° μ€ν
deo2kim 2021. 9. 11. 10:55λ°μν

π€λ¬Έμ ν΄κ²°
- μ°μ μμ ν
- λκΈ°μ€μΈ μ¬λκ³Ό λ¨Όμ μ¬μ©μ€μΈ μ¬λ μ€ κ°μ₯ 빨리 λλλ κ³³κ³Ό λΉκ΅
- λκΈ°μ€μΈ μ¬λλ³΄λ€ λ¦κ² λλλ©΄ μλ‘μ΄ μλ¦¬λ‘ λ°°μ
- κΈ°μ‘΄μ μ¬λμ΄ λλλ κ³³μ΄ μμΌλ©΄
- κ·Έκ² μ¬λ¬ κ³³μ΄ μμΌλ©΄ λλλ κ³³μ λ€ λ½μμ λ¨λ μ리 μ°μ μμ νμ λ£λλ€.
- λ μ΄μ μμ λ λ¨λ μ리 μ°μ μμ νμμ μ리λ₯΄ νλ λ½μμ λ°°μ νλ€.
- μ¬μ©μ€μΈ μ»΄ν¨ν° λλλ μκ°κ³Ό μ리λ²νΈκ° λ΄κΈ΄ μ°μ μμ ν
- λ¨μμλ μλ¦¬κ° λ΄κΈ΄ μ°μ μμ ν
μ΄λ κ² ν΄μ λκ°λ₯Ό μ¬μ©νλ€.
μ°μ μμ νλ₯Ό λκ° μ¨μΌν΄μ ν·κ°λ Έλ λ¬Έμ
π»μμ€ μ½λ
import sys
import heapq
input = sys.stdin.readline
N = int(input())
logs = [list(map(int, input().split())) for _ in range(N)]
logs.sort() # μμμ΄ λΉ λ₯Έ μμΌλ‘ μ λ ¬
# μ리 μΉ΄μ΄νΈ μ
κ²
use_cnt = [0] * N
use_cnt[0] = 1
# μ¬μ©μ€μΈ μ»΄ν¨ν° λλλμκ°κ³Ό μ리 λ²νΈ
pq = []
heapq.heappush(pq, [logs[0][1], 0])
# λ¨μμλ κ°μ₯ μλ¦¬λ€ ( μμ리 λ½μΌλ €κ³ )
computers_pq = [i for i in range(N)]
heapq.heapify(computers_pq) # μ리λ§
heapq.heappop(computers_pq)
for log in logs[1:]: # μ΄λ―Έ λ£μμΌλκΉ 1λΆν° μμ
start, end = log
if pq[0][0] > start: # μ μΌλΉ¨λ¦¬ λλλ μ λ³΄λ€ μμ μκ°μ΄ λ¦μΌλ©΄ λ¨μ μλ λ€λ₯Έ μλ¦¬λ‘ κ°λΌ
new_posi = heapq.heappop(computers_pq)
use_cnt[new_posi] += 1
heapq.heappush(pq, [end, new_posi])
else:
while True: # μ¬μ©μ€μΈ μλ¦¬κ° μ¬λ¬κ΅°λ°κ° λλμλ κ²½μ°κ° μλ€. κ·Έ μ€μμ κ°μ₯ μμ μ리λ₯Ό λ½μμΌνλ€.
prev_end, prev_seq = heapq.heappop(pq)
if pq and pq[0][0] <= start: # κ·Έ λ€μ κ²λ μ΄λ―Έ λλμλ κ²½μ°κ° μλ€.
heapq.heappush(computers_pq, prev_seq)
continue
else:
new_posi = heapq.heappushpop(computers_pq, prev_seq)
heapq.heappush(pq, [end, new_posi])
use_cnt[new_posi] += 1
break
idx = N - use_cnt.count(0)
print(idx)
print(' '.join(list(map(str, use_cnt[:idx]))))
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
λ°μν
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [python] λ°±μ€ - 21608. μμ΄ μ΄λ±νκ΅ (0) | 2021.09.15 |
|---|---|
| [python] λ°±μ€ - 1347. λ―Έλ‘ λ§λ€κΈ° (0) | 2021.09.14 |
| [python] λ°±μ€ - 11085. κ΅°μ¬ μ΄λ (0) | 2021.09.10 |
| [python] λ°±μ€ - 19598. μ΅μ νμμ€ κ°μ (0) | 2021.09.09 |
| [python] λ°±μ€ - 1013. Contact (0) | 2021.09.08 |