11/9 과일 장수
https://school.programmers.co.kr/learn/courses/30/lessons/135808
.
내 풀이(오답)
def solution(k, m, scores):
answer = 0
scores = sorted(scores, reverse = True)
# 최대 점수를 넘어가는 값들 제거
while (scores[0] != k) :
scores.pop(0)
box_num = len(scores) // m
# m개씩 상자의 개수만큼 슬라이싱해서 점수를 더해간다.
for _ in range(box_num) :
# 상자에 m개 담음
box = scores[0 : m]
answer += (min(box) * m)
for _ in range(m) :
# 담았던 m개 삭제
scores.pop(0)
return answer
예제 문제에서는 통과했지만 채점결과 특정 테스트 케이스에서 시간초과가 났다. 아마도 시간복잡도가 O(N^2)라서 그런듯하다.
새로운 풀이
def solution(k, m, scores):
answer = 0
scores = sorted(scores, reverse = True)
for i in range(0, len(scores), m) :
box = scores[i : i + m]
if len(box) == m :
answer += min(box) * m
return answer
댓글남기기