문제
프로그래머스 lv2. 이모티콘 할인행사
원본 문제 주소: https://school.programmers.co.kr/learn/courses/30/lessons/150368
문제 해석
이모티콘 사용자의 구매기준 할인율과 이모티콘 플러스 가입기준 금액이 주어진다.
이모티콘의 가격들이 주어진다.
이모티콘 플러스 가입율을 최대화 하고 판매 금액을 최대화할 때의 가입자 수와 판매 금액을 구하는 문제
문제 풀이
할인율은 4가지 경우이고, 이모티콘의 종류는 최대 7개이므로 완전 탐색을 통해 구할 수 있다.
먼저 이모티콘 별 할인율 경우의 수를 모두 구한다.
이후 해당 경우의 수에 따라 가입자, 판매금액을 모두 구한 뒤 해당 값들을 갱신해 주면 된다.
문제 코드
def solution(users, emoticons):
answer = [0, 0]
data = [10 ,20, 30, 40]
discount = []
# 이모티콘 할인율 구하기
def dfs(temp, depth):
if depth == len(temp):
discount.append(temp[:])
return
for d in data:
temp[depth] += d
dfs(temp, depth + 1)
temp[depth] -= d
dfs([0] * len(emoticons), 0)
# 완전탐색
for d in range(len(discount)):
join, price = 0, [0] * len(users)
for e in range(len(emoticons)):
for u in range(len(users)):
# 할인율을 만족하면 구매
if users[u][0] <= discount[d][e]:
price[u] += emoticons[e] * (100 - discount[d][e]) / 100
# 구매 금액에 따라 가입자 갱신
for u in range(len(users)):
if price[u] >= users[u][1]:
join += 1
price[u] = 0
# 최대 가입자, 구매 금액 갱신
if join >= answer[0]:
if join == answer[0]:
answer[1] = max(answer[1], sum(price))
else:
answer[1] = sum(price)
answer[0] = join
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 표현 가능한 이진트리 (0) | 2023.01.17 |
---|---|
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 (0) | 2023.01.16 |
[프로그래머스 / 파이썬] 테이블 해시함수 (0) | 2023.01.09 |
[프로그래머스 / 파이썬] 마법의 엘리베이터 (0) | 2023.01.08 |
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 택배 배달과 수거하기 (4) | 2023.01.06 |