728x90
문제
포인트
중요한 건 이모티콘 할인율이 10,20,30,40 중 하나로 결정된다는 점!
간과하면 급 막막해진다
코드
from itertools import product
def solution(users, emoticons):
answer = [-1, -1] # 최대 판매 수와 최소 비용 초기화
# 할인율 조합 생성
for discounts in product([10, 20, 30, 40], repeat=len(emoticons)):
sale_num = 0 # 판매 수
cost_num = 0 # 비용
# 각 사용자에 대해 계산
for user in users:
tmp = sum([emoticon * (1 - discount / 100) for discount, emoticon in zip(discounts, emoticons) if user[0] <= discount])
if tmp >= user[1]:
sale_num += 1
else:
cost_num += tmp
# 최대 판매 수와 최소 비용 갱신
if sale_num > answer[0] or (sale_num == answer[0] and cost_num > answer[1]):
answer = [sale_num, cost_num]
return answer
'프로그래밍 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 징검다리 건너기 파이썬 (0) | 2023.07.03 |
---|---|
프로그래머스 - 경주로 건설 파이썬 (0) | 2023.06.26 |
프로그래머스 - 합승 택시 요금 파이썬 (0) | 2023.06.20 |
백준 1302 - 베스트셀러 파이썬 (0) | 2023.06.16 |
냅색(Knapsack)알고리즘(배낭 문제) (0) | 2023.06.14 |
댓글