[νλ‘κ·Έλλ¨Έμ€] μΌκ·Ό μ§μ / νμ΄μ¬ / Python / heap
π‘ solutions
π¬ μΌκ·Ό νΌλ‘λλ₯Ό μ΅μνμΌλ‘ λ§λ€κΈ° μν΄μλ μ£Όμ΄μ§ Nμκ° λμ works 리μ€νΈ μμ μμ λ μμλ€μ κ°μ₯ ν° κ°λΆν° -1μ© μ€μ¬λκ°λ κ³Όμ μ΄ νμνλ€.
π¬ worksμ nμ ν¬κΈ°λ₯Ό κ³ λ €νμ λ, ν¨μ¨μ±μ ν΅κ³ΌνκΈ° μν΄μλ κ°μ λΉκ΅νλ λ‘μ§μ μν΄ heaq μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©ν΄μΌ νλ€.
π¬ μ£Όμ΄μ§ μμ μ€μ 3λ²κ³Ό κ°μ΄ μ£Όμ΄μ§ Nμκ° λμμ λͺ¨λ μμ λμ λͺ¨λ λλ§μΉ μ μλ κ²½μ°μλ 0μ λ°λ‘ 리ν΄ν μ μλλ‘ μ‘°κ±΄μ μΆκ°ν΄μΌ νλ€.
π¨π» code
import heapq
def solution(n, works):
answer = 0
if sum(works) <= n:
return 0
hq = []
for i in works:
heapq.heappush(hq, -i)
while n:
max_work = heapq.heappop(hq) + 1
n -= 1
heapq.heappush(hq, max_work)
return sum([i**2 for i in hq])
π problem
μ½λ©ν μ€νΈ μ°μ΅ - μΌκ·Ό μ§μ
νμ¬μ Demiλ κ°λμ μΌκ·Όμ νλλ°μ, μΌκ·Όμ νλ©΄ μΌκ·Ό νΌλ‘λκ° μμ λλ€. μΌκ·Ό νΌλ‘λλ μΌκ·Όμ μμν μμ μμ λ¨μ μΌμ μμ λμ μ κ³±νμ¬ λν κ°μ λλ€. Demiλ Nμκ° λμ μΌκ·Ό νΌλ‘λ
programmers.co.kr
λ¬Έμ μ€λͺ
νμ¬μ Demiλ κ°λμ μΌκ·Όμ νλλ°μ, μΌκ·Όμ νλ©΄ μΌκ·Ό νΌλ‘λκ° μμ λλ€. μΌκ·Ό νΌλ‘λλ μΌκ·Όμ μμν μμ μμ λ¨μ μΌμ μμ λμ μ κ³±νμ¬ λν κ°μ λλ€. Demiλ Nμκ° λμ μΌκ·Ό νΌλ‘λλ₯Ό μ΅μννλλ‘ μΌν κ²λλ€.Demiκ° 1μκ° λμ μμ λ 1λ§νΌμ μ²λ¦¬ν μ μλ€κ³ ν λ, ν΄κ·ΌκΉμ§ λ¨μ N μκ°κ³Ό κ° μΌμ λν μμ λ worksμ λν΄ μΌκ·Ό νΌλ‘λλ₯Ό μ΅μνν κ°μ 리ν΄νλ ν¨μ solutionμ μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν- worksλ κΈΈμ΄ 1 μ΄μ, 20,000 μ΄νμΈ λ°°μ΄μ λλ€.
- worksμ μμλ 50000 μ΄νμΈ μμ°μμ λλ€.
- nμ 1,000,000 μ΄νμΈ μμ°μμ λλ€.
[4, 3, 3] | 4 | 12 |
[2, 1, 2] | 1 | 6 |
[1,1] | 3 | 0 |
μ
μΆλ ₯ μ #1
n=4 μΌ λ, λ¨μ μΌμ μμ
λμ΄ [4, 3, 3] μ΄λΌλ©΄ μΌκ·Ό μ§μλ₯Ό μ΅μννκΈ° μν΄ 4μκ°λμ μΌμ ν κ²°κ³Όλ [2, 2, 2]μ
λλ€. μ΄ λ μΌκ·Ό μ§μλ 22 + 22 + 22 = 12 μ
λλ€.
μ
μΆλ ₯ μ #2
n=1μΌ λ, λ¨μ μΌμ μμ
λμ΄ [2,1,2]λΌλ©΄ μΌκ·Ό μ§μλ₯Ό μ΅μννκΈ° μν΄ 1μκ°λμ μΌμ ν κ²°κ³Όλ [1,1,2]μ
λλ€. μΌκ·Όμ§μλ 12 + 12 + 22 = 6μ
λλ€.