알고리즘

0

알고리즘

목록 보기
16/21

어째서 i**(0.5)를 까먹었을까.
sqrt도 안 통하고, i*1.4에 전전긍긍해보니 비참하다.


슬라이싱은 비싸다

  • 1차 시도: 시간초과 발생
def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    while len(score) >= m:
        answer += min(score[:m]) * m
        score = score[m:]
    return answer

  • 2차 시도: sort가 오래 걸리는 지 확인해봤지만, 빨랐다.
def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    # while len(score) >= m:
    #     answer += min(score[:m]) * m
    #     score = score[m:]
    return answer

  • 3차 시도: min()이 오래걸리나 확인해봤지만, 괜찮았다.
def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    while len(score) >= m:
        answer += score[:m][-1] * m
        score = score[m:]
    return answer

  • 4차 시도: 리스트를 잘라서 재할당하는 게 오래 걸리나 싶었는데, 잘 모르겠다.
def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    k = m
    while len(score) >= k:
        answer += score[:k][-1] * m
        k += m
    return answer

  • 5차 시도: 슬라이싱을 아예 없앴는데, 성공했다.
def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    k = m
    while len(score) >= k:
        answer += score[k-1] * m
        k += m
    return answer

0개의 댓글