728x90
반응형
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
728x90
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2020 | python] 문자열 압축 ✅ (0) | 2025.06.27 |
---|---|
[카카오 코테 2022 | python] 두 큐 합 같게 만들기 (0) | 2025.06.25 |
[카카오 코테 2018 | python] [1차] 프렌즈4블록 (0) | 2025.06.25 |
[카카오 코테 2022 | python] 주차 요금 계산 (0) | 2025.06.24 |
[카카오 코테 2018 | python] 파일명 정렬 (0) | 2025.06.23 |