[프로그래머스] 명예의 전당 1

kiki·2024년 1월 14일
0

프로그래머스

목록 보기
61/78

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/138477

문제 설명

  • 명예의 전당 목록의 점수의 개수 k, 1일부터 마지막 날까지 출연한 가수들의 점수인 score가 주어졌을 때, 매일 발표된 명예의 전당의 최하위 점수를 return

1차 시도 - 통과

def solution(k, score):
    answer = []
    for i in range(1, len(score)+1):
        tmp = sorted(score[:i], reverse=True)
        if len(tmp)<=k:
            answer.append(tmp[-1])
        else:
            answer.append(tmp[k-1])
    return answer

그저 score의 인덱스를 늘려가면서 k번째 최솟값을 반환하는 코드이다
뭔가 기발한 아이디어는 없는게 아쉽

2차 시도 - 통과

def solution(k, score):
    tmp = []
    answer = []
    for i in score:
        tmp.append(i)
        if len(tmp)>k:
            tmp.remove(min(tmp))
        answer.append(min(tmp))
    return answer

이건 tmp 리스트의 길이를 k보다 작거나 같게 유지하면서 min 값을 구하는 코드이다.
리스트에서 값을 인자로 전달해 해당 값의 원소를 제거할 수 있는 remove 함수를 이용했다.

정리

  • 리스트 원소 제거
    • remove: 값을 인자로 전달해 해당 값의 원소를 제거한다. (tmp.remove(14))
    • pop: 인덱스를 받아 해당 인덱스의 원소를 제거한다. (tmp.pop(-1))
    • del: 인덱스 혹은 슬라이스를 제거한다. (del tmp[1] | del tmp[1:4])

0개의 댓글