프로그래머스 LV1 - 명예의 전당(1)
내 풀이
def solution(k, score):
honor = []
answer = []
for num in score[0:k]:
honor.append(num)
honor.sort(reverse= True)
answer.append(honor[-1])
for num in score[k:]:
honor.sort(reverse=True)
if num > honor[-1]:
honor.pop()
honor.append(num)
honor.sort(reverse=True)
answer.append(honor[-1])
return answer
다른 풀이
def solution(k, score):
result = [] # 매일 발표된 명예의 전당의 최하위 점수를 저장할 리스트
k_scores = [] # 현재 날짜까지의 k번째 점수 목록
for i in score:
k_scores.append(i) # 현재 날짜의 점수를 k_scores에 추가
k_scores.sort(reverse=True) # 내림차순으로 정렬
# k_scores 리스트의 길이가 k보다 크면 가장 낮은 점수 제거
if len(k_scores) > k:
k_scores.pop()
# 매일 명예의 전당에 추가되는 최하위 점수를 result에 추가
result.append(k_scores[-1])
return result
풀이 해석
score 안의 점수를 리스트에 계속 추가하다가 len 이 k를 넘어가면 가장낮은점수는 pop 하는 방식으로 명예의 전당을 최신화한다. 최신화한 명전의 최저점수를 append한다.
배울 점
- pop() 만을 이용해서 명예의 전당 리스트를 최신화
댓글남기기