프로그래머스 연습문제
- Lv 1. 명예의 전당(1) (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/138477
def solution(k, score):
answer = []
mj = [] # 명예의 전당
for i in range(len(score)):
if (i + 1 <= k): # k일 전이라면 계속 명예의 전당에 들어가게 되므로 우선 계속 넣는다
mj.append(score[i])
mj.sort()
answer.append(mj[0])
else: # k일 이후
if (mj[0] < score[i]): # 명예의 전당에 들어갈만큼의 점수가 나온다면 -> 가장 최하점을 밀어내고 현재 점수가 들어간 뒤, 그 중 최하점 발표
mj.pop(0)
mj.append(score[i])
mj.sort()
answer.append(mj[0])
else:
answer.append(mj[0])
return answer
k
일까지는 우선 계속 명예의 전당에 추가하면서 최저점을 정답 배열에 넣어준다.k
일 이후부터는 명예의 전당에 들어갈만큼의 점수가 나타난다면, 가장 최하점을 밀어내고 해당 점수가 들어간 뒤, 그 상태에서의 최저점을 정답 배열에 넣어준다.mj
를 계속 정렬해주면, 해당 배열의 0번째 인덱스인 요소는 항상 k
번째 순위일 것이다.mj
에는 k
개의 요소가 들어가는데, 정렬하고 나면 가장 최저점이 0번째 인덱스에 오기 때문)mj
의 0번째 요소와 계속 비교해주며 정답을 채운다.min()
을 써서 구해도 좋을 것 같다.