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 |