<λ¬Έμ λ§ν¬>
https://school.programmers.co.kr/learn/courses/30/parts/12117
<νμ΄ μ λ΅>
1. λ 맡κ²: λ²μκ° 2 ~ 1,000,000μ΄λ―λ‘ μ°μ μμν(νμ΄μ¬μ κ²½μ° νν)λ₯Ό μ μ ν μ΄μ©ν΄μ ꡬνν΄μ£Όλ©΄ λλ€.
2. λμ€ν¬ 컨νΈλ‘€λ¬: 그리λ + μ°μ μμ ν λ¬Έμ . μμ²μμ μμΌλ‘ μ λ ¬νκ³ μ°μ μμ νλ₯Ό μ΄μ©ν΄ λ€μ μμ μ μΆμΆν΄μ νμ¬ μ§νμ€μΈ μμ + λμ μκ°μ κ³μ κ°±μ ν΄μ£Όλ©΄ λλ€. μμ μκ° μμΌλ‘ μΆμΆνκΈ° μν΄ νμ λ£μ λ μμλ₯Ό λ€μ§μ΄μ λ£μ΄μ€μΌλλ€.
3. μ΄μ€μ°μ μμν: μ΅λνλ§ μ ꡬννλ©΄ μ΄λ ΅μ§ μλ€.
<μ λ΅ μ½λ>
# 1. λ 맡κ²
import heapq
def solution(scoville, K):
# μ°μ μμν
heapq.heapify(scoville)
# μκΈ°
def mix(scoville):
# κ°μ₯ λ λ§€μ΄ 2κ° μ°μ μμνλ‘ μΆμΆ
first = heapq.heappop(scoville)
second = heapq.heappop(scoville)
# μκΈ°
heapq.heappush(scoville, first + second * 2)
return scoville
answer = 0
while True:
# λͺ¨λ μμμ μ€μ½λΉ μ§μλ₯Ό Kμ΄μμΌλ‘ λ§λ€ μ μλ κ²½μ°
if len(scoville) == 1 and K > scoville[0]:
answer = -1
break
# λͺ¨λ μμμ μ€μ½λΉ μ§μκ° Kμ΄μμ΄ λμμ λ
if scoville[0] >= K:
break
# μκΈ°
scoville = mix(scoville)
answer += 1
return answer
# 2. λμ€ν¬ 컨νΈλ‘€λ¬
import heapq
def solution(jobs):
answer = 0
# idx: μμ
λ²νΈ, time: νμ¬ μ§νμ€μΈ μμ
λ§λ¬΄λ¦¬ μκ°
idx = 0
time = 0
# μ²λ¦¬ν μμ
κ°μ
cnt = 0
# μμ² μμ μμΌλ‘ μ λ ¬
jobs.sort()
# μμ
λκΈ° ν
heap = []
while len(jobs) > cnt:
# μμ§ νμ μ¬λΌκ°μ§ μλ μμ
μ΄ μμ λ
if idx < len(jobs):
for i in range(idx, len(jobs)):
# μμ² μκ°μ΄ νμ¬ μμ
λ§λ¬΄λ¦¬ μκ° μ΄μ μΌ κ²½μ° (μ΄μ΄μ λ°λ‘ ν μ μλ κ²½μ°)
if jobs[i][0] <= time:
# μμμκ°, μμ²μκ° μμΌλ‘ λ£κΈ°
heapq.heappush(heap, jobs[i][::-1])
idx = i + 1
# νμ μμ
μ΄ μμ κ²½μ°
if heap:
# current: νμ¬ μ§νν μμ
νμμ λΉΌκΈ°
current = heapq.heappop(heap)
# λ§λ¬΄λ¦¬ μκ° κ³μ°
time += current[0]
# λκΈ° μκ° κ³μ°
answer += time - current[1]
cnt += 1
# νμ μμ
μ΄ μλ κ²½μ° λ°λ‘ μμ
λ±λ‘νκΈ°
elif idx < len(jobs):
time = jobs[idx][0]
# νκ· κ³μ°
answer //= len(jobs)
return answer
# 3. μ΄μ€μ°μ μμν
import heapq
def solution(operations):
answer = [0, 0]
heap = []
for operation in operations:
# μ½μ
μ°μ°μ
if operation[0] == 'I':
heapq.heappush(heap, int(operation[2:]))
# μμ μ°μ°μ
else:
if not heap:
continue
# μ΅μκ° μμ
if operation[2] == '-':
heapq.heappop(heap)
# μ΅λκ° μμ
else:
heap.remove(max(heap))
# μ λ΅ λ°ν
if heap:
answer = [max(heap), min(heap)]
return answer
'β Problem_Solving > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] κ³ λμ kit - μμ νμ (Python/νμ΄μ¬) (0) | 2023.02.07 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] κ³ λμ kit - μ λ ¬ (Python/νμ΄μ¬) (0) | 2023.02.05 |
[νλ‘κ·Έλλ¨Έμ€] μ¬μΉμ°μ° (Python/νμ΄μ¬) (0) | 2023.01.31 |
[νλ‘κ·Έλλ¨Έμ€] κ³ λμ kit - μ€ν / ν (0) | 2023.01.16 |
[νλ‘κ·Έλλ¨Έμ€] κ³ λμ kit - ν΄μ (0) | 2023.01.14 |
λκΈ