본문 바로가기

알고리즘/프로그래머스

[Python] 야근 지수

https://school.programmers.co.kr/learn/courses/30/lessons/12927

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

  • 첫 번째 풀이(시간 초과)
# 야근 지수
# 효율성 통과 못함...
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