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에 더한다.
제출 결과
느낀점
- 생각하기는 조금 재미없고 풀이는 빨랐던 문제
'알고리즘 > Lv. 3' 카테고리의 다른 글
프로그래머스 17678 셔틀버스 자바 풀이 (0) | 2025.01.20 |
---|---|
프로그래머스 17678 셔틀버스 파이썬 풀이 (0) | 2025.01.20 |
프로그래머스 12907 거스름돈 자바 풀이 (1) | 2024.12.27 |
프로그래머스 12907 거스름돈 자바스크립트 풀이 (0) | 2024.12.27 |
프로그래머스 12907 거스름돈 파이썬 풀이 (1) | 2024.12.27 |