
프로그래머스 연습문제
- 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()을 써서 구해도 좋을 것 같다.