명예의 전당(1)

NJW·2023년 4월 10일
0

코테

목록 보기
151/170

문제 설명

명예의 전당에 올라갈 수 있는 사람들의 수 k와 점수 socre 배열이 주어진다. 초반 k번째까지는 모든 사람이 명예의 전당에 올라가지만 그 후부터는 현재 점수가 명예의 제일 작은 점수보다 크면 제일 작은 점수를 빼고 그 사람이 올라가고 아니면 점수가 유지되는 방식이다.

명예의 전당에서 제일 작은 점수를 저장하는 배열을 출력하라

문제 풀이

첫 번째 접근

일단 k번째까지의 작은 수를 구해서 정답 배열에 해당 수를 k만큼 넣어줬다. 근데 자꾸 틀리는 거 아닌가. 그래서 조건문을 넣고 어쩌고... 저쩌고... 하면서 꼬이기 시작했다.

두 번째 접근

매우 성질나서 질문을 찾아보니 생각보다 단순한 문제였다머쓱.... 그냥 rank에 socre을 일단 붙여주고 만일 그 길이가 k보다 크면 작은 걸 삭제한다. 그리고 작은 값을 answer에 넣어주면 되는 거였다.

내가 처음에 시도한 일단 K까지 rank에 넣고 그 최소 값을 answer에 k번 넣어주는 방식은 k가 socre의 길이보다 작은 경우에서는 안 되는 거였다. 나와 비슷하게 접근한 사람의 풀이를 보고 알았다.

코드

Python

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

링크

프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/138477

참고한 풀이, https://velog.io/@nellroll/%EB%AA%85%EC%98%88%EC%9D%98-%EC%A0%84%EB%8B%B91

profile
https://jiwonna52.tistory.com/

0개의 댓글