본문 바로가기

알고리즘/Lv. 3

프로그래머스 12927 야근 지수 파이썬 풀이

728x90

난이도 : Lv. 3

풀이일 : 2501201

https://school.programmers.co.kr/learn/courses/30/lessons/12927

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제


아이디어

  • 제일 큰 수 -1 을 n번 동안 반복한다.
  • 반영된 수들의 제곱을 answer에 더한다.

코드

import heapq

def solution(n, works):
    answer = 0
    queue = []
    
    for w in works: # 각 작업량 heap 추가
        heapq.heappush(queue, -w)
    
    for i in range(n): # 제일 큰 값 -1 n번 반복
        num = heapq.heappop(queue) + 1
        heapq.heappush(queue, num if num < 1 else 0) # 0 예외처리
    
    while queue: # 최종 작업량 answer 반영
        num = -heapq.heappop(queue)
        answer += num ** 2
    
    return answer
  • 최대힙으로 사용하기 전에 힙에 넣는 숫자들을 음수로 바꿔서 넣었다.
  • 작업량이 0보다 작아질 수 없으므로, 0은 예외처리를 해줬다.
  • 최종적으로 남아있는 수들을 하나씩 제곱해서 answer에 더한다.

제출 결과


느낀점

  • 생각하기는 조금 재미없고 풀이는 빨랐던 문제