문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges