https://school.programmers.co.kr/learn/courses/30/lessons/12927
- 첫 번째 풀이(시간 초과)
# 야근 지수
# 효율성 통과 못함...
def solution(n, works):
answer = 0
for _ in range(n):
if sum(works)==0:
return 0
works[works.index(max(works))] -= 1
for i in works:
if i!=0:
answer += i**2
return answer
- 두 번째 풀이(통과)
# 다른 풀이
# max heap을 이용한 풀이
import heapq
def solution(n, works):
if n >= sum(works):
return 0
works = [-w for w in works]
heapq.heapify(works)
for _ in range(n):
i = heapq.heappop(works)
i += 1
heapq.heappush(works, i)
return sum([w ** 2 for w in works])
이제 슬슬... 자료구조도 생각하면서 문제를 풀어야겠다..
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 다트 게임 (0) | 2023.01.07 |
---|---|
[Python] k진수에서 소수 개수 구하기 (0) | 2023.01.06 |
[Python] 크기가 작은 부분 문자열 (0) | 2023.01.04 |
[Python] 전화번호 목록 (0) | 2023.01.01 |
[Python] 실패율 (0) | 2022.12.31 |