본문 바로가기

알고리즘/python

[python/파이썬] 프로그래머스 Lv.1 과일장수

반응형

[문제 출처]

https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[문제 풀이]

 

사과 별로 점수가 있으며 이 사과들을 포장해 가장 최대 수익을 내는 것이 목표이다.

점수는 1점부터 k점까지로 분류되며, 한 상자에는 m개씩 담아서 포장한다.

한 상자의 이익은 그 상자에 있는 '가장 낮은 점수 x m'이 된다.

 

사과들을 팔아서 가장 최대 이익을 내는 경우를 구해야 한다.

 

큰 이익을 내기 위해서는 한 상자에서 가장 낮은 점수를 차지하게 되는 사과의 점수가 최대한 높아야 한다.

따라서 내림차순으로 정렬한 후에 m번째에 위치하는 사과의 점수를 m으로 곱해서 이익에 더해준다.

 

포장이 더 가능하다면 그 이후에 있는 m번째의 점수를 m 곱해 더해준다.

포장이 안될 때까지(m개의 사과가 남지 않을 때까지) 반복한다.

 

만일 m개보다 적게 사과가 있을 때는 0점이 더해지게 된다.

 

def solution(k, m, score):
    answer = 0
    score.sort(reverse=True)
    for i in range(1,len(score)//m+1):
        answer += score[m*i-1]*m
    return answer
반응형