인천의 자유인

[Python] 과일 장수 - 프로그래머스(Lv.1) 본문

Python/Python코딩테스트

[Python] 과일 장수 - 프로그래머스(Lv.1)

Youngook 2024. 7. 20. 08:03
728x90
반응형

 

반응형

 
 
 

나의 문제 풀이

def solution(k, m, score):
    answer = sorted(score)
    a = len(answer)%m
    for i in range(a):
        answer.pop(0)
    result = 0
    for i in range(0,len(answer),m):
        result += answer[i]*m
    return result

 
k는 사과 최대 점수, m은 한 상자에 들어가는 사과 수임을 명확히 인식하고 들어가야지 헷갈리지 않습니다.
 
먼저 score를 오름 차순으로 정렬한 후 사과 박스에 담은 후 남은 사과 수를 구합니다. 최대 이익으로 내기 위해서는 가장 점수가 낮은 사과들을 제외하는 것이 좋기 때문입니다. 남은 사과 수는 answer 리스트 안에서 가장 점수가 낮은 사과로 구성되어야 하기 때문에 이를 간편하게 구하기 위해선 sort로 정렬하는 작업이 필요합니다.
 
answer를 정렬하는 작업을 한 후 남은 사과 개수 만큼 for문을 돌려서 answer리스트에서 맨 앞에 있는(가장 낮은 사과 점수) 것을 계속 없앱니다.
 
그리고 m으로 딱 나눠지는 수가 만들어지면 m 단위로 가격을 구합니다. 입출력 #2이 계산한 방식과 같이 구하는 것입니다. answer[i]는 최저 사과 점수를 의미하고 m은 상자에 들어갈 수입니다. 계속 더하면 결국 답을 도출할 수 있게 됩니다.
중간에 print로 확인하시면서 보시면 어떻게 작동하고 있는지 더 이해가 잘 될수 있습니다.

728x90
반응형