일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- BFS
- 백준
- 파이썬 #백준 #알고리즘 #코딩테스트
- 알고리즘
- java #자바 #생활코딩
- 자바 #java
- 다익스트라
- 프로그래머스
- 백준 #알고리즘 #파이썬 #코딩테스트
- css #웹 #생활코딩
- java #자바 #나동빈
- css #생활코딩 #웹
- 다이나믹프로그래밍
- 백트랙킹
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- Dijkstra
- DFS
- 투포인터
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- react #리액트 #동빈나
- 코딩테스트
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 재귀
- 파이썬
- PYTHON
- 백준 #파이썬 #알고리즘 #코딩테스트
- java #자바 #동빈나
- java #자바
- dp
- react #리액트 #동빈나 #나동빈 #유튜브강의
Archives
- Today
- Total
커리까지
[프로그래머스] 야근 지수 파이썬 본문
728x90
SMALL
문제 설명
회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요.
제한 사항
works
는 길이 1 이상, 20,000 이하인 배열입니다.works
의 원소는 50000 이하인 자연수입니다.n
은 1,000,000 이하인 자연수입니다.
입출력 예
works | n | result |
---|---|---|
[4, 3, 3] | 4 | 12 |
[2, 1, 2] | 1 | 6 |
[1,1] | 3 | 0 |
입출력 예 설명
입출력 예 #1
n=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 야근 지수를 최소화하기 위해 4시간동안 일을 한 결과는 [2, 2, 2]입니다. 이 때 야근 지수는 22 + 22 + 22 = 12 입니다.
입출력 예 #2
n=1일 때, 남은 일의 작업량이 [2,1,2]라면 야근 지수를 최소화하기 위해 1시간동안 일을 한 결과는 [1,1,2]입니다. 야근지수는 12 + 12 + 22 = 6입니다.
입출력 예 #3
남은 작업량이 없으므로 피로도는 0입니다.
제출 답안
- 문제를 살펴보면
works
에서n
만큼 시간을 차감했을 때 가장 작은 야근 지수를 찾아야 한다는 것을 알 수 있다. - 그러면
works
을 최대 힙으로 만들어준다.heapq
는 최솟값이 가장 앞으로 오기 때문에-
로 다시 만든 리스트를 사용한다.
- while문을 돌면서 최댓값을 꺼내고 그 값에서
+1
을 해준다.- 왜냐하면 지금
-
로 값을 변환했기 때문에+
를 하는 것이다.
- 왜냐하면 지금
- 그 다음에
n
에서-1
을 하면 된다. - 마지막으로
works
값을 돌면서 제곱한 값을 반환한다.
import heapq
def solution(n, works):
if sum(works) <= n:
return 0
works = [ -i for i in works]
heapq.heapify(works)
while 0 < n :
max_work = heapq.heappop(works)
heapq.heappush(works, max_work + 1)
n -= 1
answer = 0
for i in works:
answer += (i**2)
return answer
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[프로그래머스] 숫자 게임 파이썬 (0) | 2023.06.08 |
---|---|
[프로그래머스] 단어 변환 파이썬 (1) | 2023.06.07 |
[프로그래머스] 최고의 집합 파이썬 (0) | 2023.06.05 |
[프로그래머스] 등산코스 정하기 파이썬 (0) | 2023.05.21 |
[프로그래머스] 과제 진행하기 파이썬 (0) | 2023.05.19 |
Comments