[프로그래머스 LV3] 야근 지수

Junyoung Park·2022년 1월 8일
0

코딩테스트

목록 보기
40/631

1. 문제 설명

야근 지수

2. 문제 분석

각 원소의 제곱의 합을 야근 지수로 결정하는 까닭에, '최댓값'을 작게 만들어야 한다. 즉 한 번 값을 뺄 때마다 리스트 내 최댓값을 리턴하고, 여기에 1을 뺀 값을 다시 더해주어야 하는데, 일반 max 함수 및 sort를 쓸 경우 시간이 오래 걸린다. 파이썬이 제공하는 힙큐 모듈을 사용하고, 최댓값을 출력해야 하므로 -1을 곱한 값을 우선순위로 삼아두자.

3. 나의 풀이

import heapq
def solution(n, works):
    heap = []
    for work in works:
        heapq.heappush(heap, (-work, work))
    for _ in range(n):
        largest = heapq.heappop(heap)[1] - 1
        heapq.heappush(heap, (-largest, largest))
    answer = 0
    for work in heap:
        if work[1]>0:
            answer += work[1]**2
    return answer
profile
JUST DO IT

0개의 댓글