문제링크: 이모티콘 할인행사
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️⭐️⭐️ |
| 풀이시간 | 66분 |
| 제출횟수 | 1 |
| 인터넷검색유무 | yes |
🍒 My Code
import itertools
def solution(users, emoticons):
answer = [0,0]
discount = [10,20,30,40]
dis_product = list(itertools.product(discount, repeat=len(emoticons))) #할인률 중복조합 list
for i in dis_product:
buy = []
for per,cost in users:
buy.append(sum([emoticons[j]*(100-i[j])*0.01 if i[j]>=per else 0 for j in range(len(i))]))
new_num,gain_cost = 0,sum(buy) #새로가입한사람수,이모티콘매출액
for b in range(len(buy)):
if buy[b]>=users[b][1]:
new_num+=1
gain_cost-=buy[b]
if new_num>answer[0]:
answer[0]=new_num
answer[1]=gain_cost
elif new_num==answer[0] and gain_cost>answer[1]:
answer[0]=new_num
answer[1]=gain_cost
return answer
💡 What I learned
중복순열: product(list_이름, repeat=n) 중복조합: combinationswith_replacement(list이름, n)from itertools import product
def solution(users, emoticons):
E = len(emoticons)
result = [0, 0]
percents = (10, 20, 30, 40)
prod = product(percents, repeat=E)
for p in prod:
prod_members, prod_price = 0, 0
for buy_percent, max_price in users:
user_price = 0
for item_price, item_percent in zip(emoticons, p):
if item_percent >= buy_percent:
user_price += item_price * (100-item_percent) * 0.01
if user_price >= max_price:
prod_members += 1
else:
prod_price += user_price
result = max(result, [prod_members, prod_price])
return result