Programmers

[Programmers / Python 풀이] 과일 장수

Hoo_Dev 2022. 12. 27. 19:42
def solution(k, m, score):
    answer = 0
    box_lst = []
    score.sort()
    while len(score) >= m:
        apple_lst = []
        for i in range(m):
            a = score.pop()
            apple_lst.append(a)
        answer += min(apple_lst) * len(apple_lst)
    return answer

풀고 나서 다른 사람의 풀이를 보고 현타가 왔다.. 그래서 공부 할 겸 코드 분석

 

1. 익명의 고수(1)

def solution(k, m, score):
    return sum(sorted(score)[len(score)%m::m])*m

오름차순으로 정렬 된 리스트들을 문자열 슬라이스를 통해 개수만큼 짜르되 박스들의 최소값들의 리스트들의 합 * 박스의 개수 를 반환해준다.

 

2. 익명의 고수(2)

solution = lambda _, m, s: sum(sorted(s)[-m::-m]) * m

잊고 있던 람다함수에 대해 다시 알게 된 풀이 위 풀이와 비슷하지만 신박해서 가져와봤다.

 

람다함수 -> (lambda x,y: x + y)(10, 20) 과 같이 익명함수로 쓰인다.