728x90
푸는 방법은 생각을 했으나 max 를 매번 구해서 시간 초과가 났다. heapq 를 사용하면 시간 초과가 나지 않는다.
- heapq.heappush(heap, item) : item을 heap에 추가
- heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨.
def check(l):
k = max(l)
for i in range(0,len(l)):
if l[i] == k:
l[i]-=1
break
return l
# for i in range(0,len(l)-1):
# if l[i]>l[i+1]:
# l[i]-=1
# break
def solution(n, works):
answer = 0
# 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값
if sum(works)<=n or len(works)==0:
return 0
# 앞 숫자를 바로 뒤 숫자와 같을 때 까지 빼기
count = 0
works = list(sorted(works, reverse = True))
while True:
works = check(works)
count+=1
if count == n:
break
for i in range(0,len(works)):
answer += works[i]**2
return answer728x90
'🟢 알고리즘 문제 풀이 > Programmers' 카테고리의 다른 글
| [파이썬] 프로그래머스 베스트앨범 (0) | 2023.02.06 |
|---|---|
| [파이썬] 프로그래머스 숫자 게임 (0) | 2023.02.06 |
| [파이썬] 프로그래머스 최고의 집합 (0) | 2023.01.21 |
| [파이썬] 프로그래머스 이중우선순위큐 (0) | 2023.01.20 |
| [파이썬] 프로그래머스 정수 삼각형 (0) | 2023.01.20 |