2023. 1. 27. 00:57γπ± Algorithm/Greedy
μ νμ μΈ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ΄λ€
1374λ²: κ°μμ€
첫째 μ€μ κ°μμ κ°μ N(1 ≤ N ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μ κ±Έμ³ κ° μ€λ§λ€ μΈ κ°μ μ μκ° μ£Όμ΄μ§λλ°, μμλλ‘ κ°μ λ²νΈ, κ°μ μμ μκ°, κ°μ μ’ λ£ μκ°μ μλ―Ένλ€. κ°μ
www.acmicpc.net
βοΈ νμ΄
λ€λ₯Έ λΆλ€ νμ΄ λ³΄λκΉ heapq λ₯Ό μ¬μ©νλλ°, λλ 리μ€νΈλ₯Ό μ¬μ©νλ€.
1. κ°μ₯ λ¨Όμ μμνλ κ°μ κΈ°μ€μΌλ‘ μ λ ¬ μΉλ€.
2. μ°¨λ‘λλ‘ λ¦¬μ€νΈμ μ μ₯νλ, λλλ μκ°λ§ μ μ₯νλ€.
3. κ°μλ₯Ό μ°¨λ‘λ‘ μν -> 리μ€νΈμ μ μ₯λ μλ³΄λ€ κ°μ μμ μκ°μ΄ λ ν¬λ€λ©΄, μ μ₯λ μΈλ±μ€μ λλλ μκ°μ μ μ₯νλ€.
(μ΄μ κ°μ λλλ μκ° < λ€μ κ°μ μμμκ° : κ°μμ€ μ¬μ© κ°λ₯)
κ°μμ€ κ΅μ²΄κ° νμν λ del μ΄λ remove λ₯Ό μΉ κΉ μκ°λ νλλ°, ν΄λΉ μΈλ±μ€μ κ°λ§ λ°κΏμ£Όλ©΄ λ κ°λ¨ν ν μ μλ€.
πΏ κΈ°μ‘΄ μ½λ
N = int(input())
temp = []
result = []
for _ in range(N):
a, b, c = map(int, input().split())
temp.append([b, c])
temp.sort(key=lambda x: x[0])
flag = True
for t in temp:
start, end = t
if len(result) == 0:
result.append(end)
continue
for idx, r in enumerate(result):
if r <= start:
result[idx] = end
flag = False
break
if flag:
result.append(end)
flag = True
print(len(result))
β‘οΈ κ°μ λ μ½λ
νμ΄μ¬ μ§μ§ μ νν± μκ° μ©λΉ γ
flag λ‘ κ΄ν λΆκΈ° μΉμ§μκ³ for~else μ¬μ©νλ€. κ°κΎΈλ₯΄
N = int(input())
times = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[1])
result = [times[0][2]]
for i, start, end in times[1:]:
for idx, r in enumerate(result):
if r <= start:
result[idx] = end
break
else:
result.append(end)
print(len(result))
β Heapq λ₯Ό μ¬μ©ν νμ΄
import heapq
N = int(input())
times = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[1])
min_heap = []
count = 0
for i, start, end in times:
while min_heap and min_heap[0] <= start:
heapq.heappop(min_heap)
heapq.heappush(min_heap, end)
count = max(count, len(min_heap))
print(count)
heapq λ₯Ό μ¬μ©ν νμ΄κ° μλ±ν λΉ λ₯Έ κ²μ νμΈν μ μλ€.
list λ₯Ό μ¬μ©ν λ for λ¬Έμ΄ break λμ§ μλ μ΄μ result λ₯Ό λͺ¨λ μνν΄μΌ νλ€. λ°λΌμ heapq μ λΉν΄ μκ°μ΄ λ§μ΄ μμλ μ λ°μ μλ€.
'π± 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 |