DataScience trainee

Leetcode 1402. Reducing Dishes in Python3

Reducing Dishes


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Leetcode 에 공개된 예제이며 링크는 아래와 같습니다.

https://leetcode.com/problems/reducing-dishes/


코드

def maxSatisfaction(self, satisfaction: List[int]) -> int:
    # 우선 satisfaction을 sorted
    satisfactions = sorted(satisfaction)
    max_score = 0

    # satiscations가 없을때까지 반복, 시간복잡도는 O(n2)
    while satisfactions:
        # satisfaction에서 하나씩 빼오면서 score 계산
        time = 1
        score = 0
        for like in satisfactions:
            score += (time * like)
            time += 1
        # score 가 가장 큰 값인지 확인
        if max_score < score:
            max_score = score
        # 맨 처음, 그러니까 가장 점수가 작은 값을 빼고 다시한번 score계산
        satisfactions.pop(0)

    return max_score

마치며

이번 포스팅은 Leetcode에 존재하는Greedy 알고리즘 중 난이도 Hard 에 해당하는 문제입니다.