본문 바로가기

Algorithm

명예의 전당 (1) / 프로그래머스

 

정답

  • 프로그램 시작 초기 k일 까지는 명예의 전당에서 가장 작은 값을 ans에 추가
  • k일 이후에는 명예의 전당의 가장 작은 수보다 등록되는 점수가 더 크다면 가장 작은 수를 제외하고 새 점수를 명예의 전당에 등록한 후 명예의 전당 최솟값을 ans에 추가
def solution(k, score):
    best = score[:k]
    m = []
    ans = []
    new_score = score[k:]
    # 프로그램 시작 이후 초기 k일
    for i in best:
        m.append(i)
        m.sort(reverse=True) # 내림차순 정렬
        ans.append(m[-1])

    # k일 이후
    for i in new_score:
        best.sort(reverse=True) # 내림차순 정렬 100.10,1 ...
        if best[-1] < i:
            best.pop()
            best.append(i)
            best.sort(reverse=True)
            ans.append(best[-1])
        else:
            ans.append(best[-1])
    
    return ans