오랑우탄의 반란
프로그래머스 | 명예의 전당 (1) (Python3) 본문
반응형
오늘도 오랑이는 문제를 풉니다.
명예의 전당 (1)
풀이 과정
우선 전당에 올라갈 값들을 따로 저장해둘 빈 리스트 temp 가 필요합니다.
이때 k 값과 무관하게 모든 score 값 i 는 temp에 저장되는 과정을 거치므로 for 문 안에 바로 넣어줍니다.
문제 문맥상 temp 의 sort를 해야 하나 싶었지만 어차피 추출할 때 min 값으로 추출하면 돼서 굳이 정렬이 필요 없습니다.
def solution(k, score):
answer = []
temp = []
for i in score:
temp.append(i)
#조건
answer.append(min(temp))
return answer
이제 구체적인 조건에 대해 생각해봅시다.
temp 의 길이가 k 보다 길어질 경우, temp 에서 가장 작은 값을 제거하고 남은 값 중에서 가장 작은 값이 answer 에 들어가는 구조입니다.
처음에는 이런 식으로 temp와 score 의 최솟값을 비교하는 조건문을 작성했는데 조건문이 많아지고 불필요한 중복이 있습니다.
if len(temp) < k:
temp.append(i)
else:
if min(temp) < i:
temp.remove(min(temp))
temp.append(i)
그렇기 때문에 위에서 작성한 조건에 대해 딱 필요한 부분만 코드로 짜보면 아래와 같습니다.
어차피 조건 실행 후 다시 for 반복문으로 돌아가기 때문에 프로그램이 자동으로 temp 에 숫자를 추가해 다시 len(temp)이 k 보다 커지는 구조가 됩니다.
if len(temp) > k:
temp.remove(min(temp))
작성한 조건들을 모두 합쳐주면 아래와 같습니다.
최종 코드
def solution(k, score):
answer = []
temp = []
for i in score:
temp.append(i)
if len(temp) > k:
temp.remove(min(temp))
answer.append(min(temp))
return answer
오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~
반응형
'PYTHON > 프로그래머스' 카테고리의 다른 글
프로그래머스 | 과일 장수 (Python3) (4) | 2024.07.22 |
---|---|
프로그래머스 | 2016년 (Python3) (0) | 2024.07.22 |
프로그래머스 | 콜라 문제 (Python3) (2) | 2024.07.16 |
프로그래머스 | 푸드 파이트 대회 (Python3) (2) | 2024.07.16 |
프로그래머스 | 가장 가까운 같은 글자 (Python3) (0) | 2024.07.15 |