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

 

프로그래머스

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

programmers.co.kr


내 풀이

 

최초 틀렸던 풀이

def solution(n, works):
    answer = 0
    if n >= sum(works):
        return 0

    sums=0    
    while n:
        works.sort(reverse=True)
        works[0] -=1
        n-=1
    works.sort()

    return sum([i**2 for i in works])

 

사실 틀릴줄 알고 있었다. 왜냐면 레벨3 문제인데 너무 쉬웠기 때문.

틀리고 나니까 heapq을 써야겠구나 싶어서 바로 적용해서 풀었다.

 

import heapq

def solution(n, works):
    answer = 0
    if n >= sum(works):
        return 0

    works = [-i for i in works]
    #print(works)
    heapq.heapify(works)

    for _ in range(n):
        i = heapq.heappop(works)
        i += 1
        heapq.heappush(works, i)

    return sum([i ** 2 for i in works])

 

 

 


리스트 컴프리헨션이 점점 익숙해지고 있어서 그 점은 마음에 든다만 잘 짠 코드인지는 좀 의문이 든다.


다른사람의 풀이

 



 

'취준 > 프로그래머스' 카테고리의 다른 글

n^2 배열 자르기 - 파이썬  (0) 2022.10.11
방문 길이 - 파이썬  (1) 2022.10.05
행렬의 곱셈 - 파이썬  (0) 2022.09.12
영어 끝말잇기 - 파이썬  (0) 2022.09.12
k진수에서 소수 개수 구하기 - 파이썬  (0) 2022.09.11

+ Recent posts