πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level 3 (μ•Όκ·Ό μ§€μˆ˜)

γ…… γ…œ γ…” γ…‡ 2023. 1. 17. 02:04
728x90

1. 문제 μ„€λͺ…

νšŒμ‚¬μ› DemiλŠ” 가끔은 야근을 ν•˜λŠ”λ°μš”, 야근을 ν•˜λ©΄ μ•Όκ·Ό ν”Όλ‘œλ„κ°€ μŒ“μž…λ‹ˆλ‹€. μ•Όκ·Ό ν”Όλ‘œλ„λŠ” 야근을 μ‹œμž‘ν•œ μ‹œμ μ—μ„œ 남은 일의 μž‘μ—…λŸ‰μ„ μ œκ³±ν•˜μ—¬ λ”ν•œ κ°’μž…λ‹ˆλ‹€. DemiλŠ” Nμ‹œκ°„ λ™μ•ˆ μ•Όκ·Ό ν”Όλ‘œλ„λ₯Ό μ΅œμ†Œν™”ν•˜λ„λ‘ 일할 κ²λ‹ˆλ‹€.Demiκ°€ 1μ‹œκ°„ λ™μ•ˆ μž‘μ—…λŸ‰ 1λ§ŒνΌμ„ μ²˜λ¦¬ν•  수 μžˆλ‹€κ³  ν•  λ•Œ, ν‡΄κ·ΌκΉŒμ§€ 남은 N μ‹œκ°„κ³Ό 각 일에 λŒ€ν•œ μž‘μ—…λŸ‰ works에 λŒ€ν•΄ μ•Όκ·Ό ν”Όλ‘œλ„λ₯Ό μ΅œμ†Œν™”ν•œ 값을 λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ solution을 μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

 

 

2. μ œν•œ 사항

worksλŠ” 길이 1 이상, 20,000 μ΄ν•˜μΈ λ°°μ—΄μž…λ‹ˆλ‹€.
  • works의 μ›μ†ŒλŠ” 50000 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • n은 1,000,000 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

 

 

 

3. λ‚΄ 풀이 

import heapq
def solution(n, works):
    works.sort(reverse=True)
    works = [-x for x in works if x>0]
    for i in range(n):
        w = heapq.heappop(works)
        if w <= -1:
            heapq.heappush(works,w+1)
        else:
            heapq.heappush(works,w)
        
    return sum([x**2 for x in works])

μ–‘μˆ˜ 값을 μŒμˆ˜κ°’μœΌλ‘œ λ³€κ²½ν•œ λ’€ μ΅œμ†Œ νž™ μ‚¬μš©

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이 

from heapq import heapify, heappush, heappop
def solution(n, works):
    heapify(works := [-i for i in works])
    for i in range(min(n, abs(sum(works)))):
        heappush(works, heappop(works)+1)
    return sum([i*i for i in works])
728x90