title: "[프로그래머스] 이모티콘 할인행사 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/150368"
description: "프로그래머스 Level 2 문제 [이모티콘 할인행사]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

import itertools
def solution(users, emoticons):
    n_user, n_emo = len(users), len(emoticons)
    
    max_sub, max_sales = 0, 0
    for rates in itertools.product([10, 20, 30, 40], repeat=n_emo):
        curr_sub, curr_sales = 0, 0
        # 각 사용자의 할인율 임계값과 구매 비용의 임계값을 순회하면서
        for rate_threshold, total_threshold in users:
            # 이모티콘 구매 비용을 우선 구합니다.
            total = 0
            for r, emo in zip(rates, emoticons):
                if r >= rate_threshold:
                    total += int(emo - emo * (r / 100))
            
            # 임계값 이상 사용 시 이모티콘 구매는 취소하고, 구독합니다.
            if total >= total_threshold:
                curr_sub += 1
            # 그렇지 않다면 판매액을 업데이트 합니다.
            else:
                curr_sales += total
                
        # 이 할인율 조합이 이전 조합보다 좋은지 판단합니다.
        if curr_sub > max_sub:
            max_sub, max_sales = curr_sub, curr_sales
        elif curr_sub == max_sub and curr_sales > max_sales:
            max_sales = curr_sales

    return max_sub, max_sales

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges