Algorithm

[카카오 코테 2023 | python] 이모티콘 할인행사

삐롱K 2025. 7. 1. 10:45

 

Q1) 문제를 어떻게 이해했나요?
A1) 모든 할인율 조합에 대해 시뮬레이션을 수행하고, 각 조합에 대해 이모티콘 플러스 가입자 수와 판매액을 계산한 후,
가입자 수 우선 → 판매액 기준으로 최적 결과를 찾는 완전탐색(Brute Force) 유형입니다.
Q2) 문제를 어떻게 풀 예정인가요?
A2) 이 문제는 가능한 할인율 조합이 매우 적기 때문에 완전탐색으로도 충분히 풀 수 있습니다.
이모티콘이 최대 7개, 각 이모티콘마다 선택할 수 있는 할인율이 4가지(10,20,30,40)이므로
총 경우의 수는 4⁷ = 16,384가지로, 계산량이 많지 않습니다.
1. 가능한 모든 할인율 조합 생성
2. 각 할인 조합에 대해 사용자별 행동 시뮬레이션
3. 조합별로 가입자 수와 판매액을 계산

 

💡 최적의 코드

from itertools import product

def solution(users, emoticons):
    discount_rates = [10, 20, 30, 40]
    best = [0, 0]  # [가입자 수, 매출액]

    # 모든 할인율 조합을 생성
    for discounts in product(discount_rates, repeat=len(emoticons)):
        plus_members = 0
        sales = 0

        # 각 유저에 대해 시뮬레이션
        for ratio, price_limit in users:
            total = 0
            for i in range(len(emoticons)):
                if discounts[i] >= ratio:  # 유저 기준 이상 할인된 이모티콘만 구매
                    discounted_price = emoticons[i] * (100 - discounts[i]) // 100
                    total += discounted_price

            # 기준 초과하면 이모티콘 플러스 가입
            if total >= price_limit:
                plus_members += 1
            else:
                sales += total

        # 우선순위: 가입자 수 > 판매액
        if plus_members > best[0]:
            best = [plus_members, sales]
        elif plus_members == best[0] and sales > best[1]:
            best = [plus_members, sales]

    return best

 

 

[추천 강의]

https://inf.run/7TU84

 

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의

현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,

www.inflearn.com

https://inf.run/jzapB

 

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인

현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.

www.inflearn.com

 

728x90
반응형