최대 1 분 소요

문제 링크

내 풀이

def solution(k, score):
    honor = []
    answer = []
    for num in score[0:k]:
        honor.append(num)
        honor.sort(reverse= True)
        answer.append(honor[-1])
    for num in score[k:]:
        honor.sort(reverse=True)
        if num > honor[-1]:
            honor.pop()
            honor.append(num)
            honor.sort(reverse=True)
        answer.append(honor[-1])
                  
    return answer

다른 풀이

def solution(k, score):
    
    result = []  # 매일 발표된 명예의 전당의 최하위 점수를 저장할 리스트
    k_scores = []  # 현재 날짜까지의 k번째 점수 목록

    for i in score:
        
        k_scores.append(i)  # 현재 날짜의 점수를 k_scores에 추가
        k_scores.sort(reverse=True)  # 내림차순으로 정렬
        
        # k_scores 리스트의 길이가 k보다 크면 가장 낮은 점수 제거
        if len(k_scores) > k:
            k_scores.pop()  
        
        # 매일 명예의 전당에 추가되는 최하위 점수를 result에 추가
        result.append(k_scores[-1])

    return result

풀이 해석

score 안의 점수를 리스트에 계속 추가하다가 len 이 k를 넘어가면 가장낮은점수는 pop 하는 방식으로 명예의 전당을 최신화한다. 최신화한 명전의 최저점수를 append한다.

배울 점

  • pop() 만을 이용해서 명예의 전당 리스트를 최신화

댓글남기기