[프로그래머스 level1] 명예의 전당(1) - pyhon3
문제 해설
k와 score가 주어진다.
k는 명예의 전당에 총 이름이 들어가는 숫자이다.
예를 들어, k가 4이면 명예의 전당에 오를 사람은 4명 뿐이다.
score는 한 사람이 노래를 불렀을 때의 점수이다.
그래서 문제는 명예의 전당의 점수보다 현재의 점수가 크다면 가장 낮은 점수를 없애고 현재 점수를 올린다.
그리고 가장 낮은 점수를 출력하면 된다.
코드
def solution(k, score):
list_score = []
result = []
for score_each in score:
if len(list_score) != k:
list_score.append(score_each)
result.append(min(list_score))
else: #list_score에 k개 만큼 요소가 채워진 것
if score_each >= min(list_score):
list_score.remove(min(list_score))
list_score.append(score_each)
result.append(min(list_score))
else:
result.append(min(list_score))
return result
1. 일단 score의 점수 하나하나에 접근한다.
for score_each in score:
2. 그리고 명예에 전당에 오를 점수들을 list_score라고 리스트를 만들어 저장한다.
list_score = []
3. 만약에 list_score의 요소의 길이가 k개를 넘어가지 않는다면 score_each가 순서대로 저장될 것이고, k개라면 밑에 문장을 실행시킨다.
if len(list_socre) != k:
else:
3-1. 만약에 list_score의 요소의 길이가 k개를 넘어가지 않는다면 score_each가 순서대로 저장되며, 저장될 때마다 result라는 리스트를 만들어서 그 명예전당의 최소값을 넣어준다.
if list_score.append(score_each)
result.append(min(list_score))
3-2. list_score의 요소의 길이가 k개라면, 밑 문장을 실행해주는데, 그 밑문장은 이렇다
4-1. 만약 score_each의 값이 list_score의 최솟값보다 크거나 같으면
if score_each >= min(list_score):
4-1-1. 최솟값을 삭제하고 현재 점수를 리스트에 넣어준다.
list_score.remove(min(list_score))
list_score.append(score_each)
4-1-2. 그리고 새로 만들어진 list_score의 최솟값을 result에 넣어준다.
result.append(min(list_score))
4-2. 그게 아니라면 score_each의 값이 list_score 최솟값보다 작으면
else:
4-2-2. 기존의 list_score를 유지하고 유지된 list_score의 최솟값을 result에 넣는다.
result.append(min(list_score))