https://school.programmers.co.kr/learn/courses/30/lessons/138477
문제가 좀 긴데, 요약하자면
len(score)의 수 만큼 가수가 존재하고, 각 가수는 해당되는데 index+1 날짜에 공연을 하게되어 관객들로부터 점수를 얻게된다.
그 점수는 명예의 전당의 최소 수와 비교되어 만일 해당 날짜에 공연한 가수의 점수가 더 크다면, 당일날 공연한 가수의 점수는 명예의 전당에 오르게 된다.
즉, k = 2, score=[1,2,3,4]라고 했을 때, score의 index로 말하자면
0번째 날 --> 명예의 전당에 아무도 등록되지 않았으므로 명예의 전당에 1이 올라간다
1번째 날 --> 아직 명예의 전당에 k수 만큼 등록된 점수가 없으므로 2가 등록된다
2번째 날 --> 명예의 전당은 풀방인 상태. index 2의 가수가 3점을 얻었고 전당에 등록된 최소 점수가 1 이므로, 1은 명예의 전당에서 제외되고 3이 그 자리를 차지하게 된다.
.....
이런 식으로 0번째 날부터 len(score)의 날까지 명예의 전당에 등록된 점수들 중 최소 점수를 list형태로 return하는 것이 이번 문제다.
def solution(k, score):
answer = []
arr = []
for i in range(len(score)):
if k > 0:
k-=1
arr.append(score[i])
else:
if min(arr) < score[i]:
arr.pop(arr.index(min(arr)))
arr.append(score[i])
answer.append(min(arr))
return answer
명예의 전당에 자리(k)만큼은 자동으로 명예의 전당에 오르므로 index와 k를 비교하였고
k날이 지난 경우엔 전당(arr)에 등록된 최소 점수와 해당 인덱스(score[i])를 비교했다.
k번째 날, 그리고 명예의 전당에 등록된 최소점수와 score[i]의 비교가 끝난 이후 answer에 최소 점수를 append 시켜주며 answer르 채워나가게 된다.
아직 레벨 1은 무리없이 풀 수 있지만, 아주 쉬운문제의 2레벨을 제외한 그 이상의 난이도는 내겐 아직 힘들다...
파이팅하자.
'알고리즘' 카테고리의 다른 글
백준 1026) 보물 -python (0) | 2023.01.05 |
---|---|
프로그래머스) 푸드 파이트 대회 -python (0) | 2023.01.03 |
프로그래머스)과일장수 -python (0) | 2023.01.02 |
프로그래머스) 크기가 작은 부분문자열 -python (0) | 2023.01.01 |
백준 7568)덩치 -python (0) | 2022.12.30 |