https://school.programmers.co.kr/learn/courses/30/lessons/150368
완전탐색을 이용해서 풀었다.
중복순열을 이용해서 할인 가짓수를 먼저 계산해주고,
반복문을 통해 각각 users를 순회하면서
가격 >= 구매액이면 플러스 가입자를 늘리고, 가격 < 구매액이면 판매액을 늘려
조건에 맞는 최댓값을 리턴해주면 된다.
# 프로그래머스 150368: 이모티콘 할인행사 (2023 KAKAO BLIND RECRUITMENT)
from itertools import product
def solution(users, emoticons):
per = [10, 20, 30, 40] # 할인 케이스
answer = [0, 0]
for i in product(per, repeat=len(emoticons)): # 중복순열
res = [0, 0]
for rate, cost in users:
total = 0 # 구매액
for j in range(len(emoticons)):
if i[j] < rate: # rate보다 할인율이 큰 가격만 계산하도록 한다.
continue
total += ((100 - i[j]) / 100) * emoticons[j]
# 구매 비용의 합이 일정 가격 이상이 된다면, 이모티콘 플러스 서비스에 가입
if total >= cost:
res[0] += 1
else:
res[1] += total
# 조건1 -> 조건2 를 만족하는 최댓값
if answer[0] == res[0]:
answer[1] = max(answer[1], res[1])
elif answer[0] < res[0]:
answer = res
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Lv2] 택배 배달과 수거하기 (Python) - 2023 KAKAO BLIND RECRUITMENT (0) | 2023.02.28 |
---|---|
[프로그래머스 | Lv2] 두 큐 합 같게 만들기 (Python) - 2022 KAKAO TECH INTERNSHIP (0) | 2023.02.25 |
[프로그래머스 | Lv2] 롤케이크 자르기 (Python) (0) | 2023.02.07 |
[프로그래머스 | Lv2] 마법의 엘리베이터 (Python) (0) | 2023.02.03 |
[프로그래머스 | Lv2] 이진 변환 반복하기 (Python) (0) | 2023.02.01 |