728x90
https://school.programmers.co.kr/learn/courses/30/lessons/150368
모든 경우의 수를 탐색하는 완전탐색 문제였습니다.
이모티콘당 모든 할인 상황을 중복 순열로 구한 후
모든 상황에 대해 조건을 판단하는 문제였습니다.
중복순열을 구할때 파이썬에서 제공하는 product 를 사용했습니다.
# 1. 이모티콘 플러스 가입자 최우선
# 2. 이모티콘 판매액 차우선
from itertools import product
sale_list = [10, 20, 30, 40]
def solution(users, emoticons):
answer = [0, 0]
sale_situation_list = []
# 모든 세일 상황에 대한 중복 순열을 저장
for i in product(sale_list, repeat=len(emoticons)):
sale_situation_list.append(list(i))
# 모든 할인 상황 완전 탐색
for situation in sale_situation_list:
plus_subscriber = 0
emoticon_total_amount = 0
for user in users:
sale_value, max_price = user
emoticon_amount = 0
for i, sale_percent in enumerate(situation):
if sale_value <= sale_percent:
emoticon_amount += (emoticons[i] * (100 - sale_percent) / 100)
if emoticon_amount >= max_price:
plus_subscriber += 1
else:
emoticon_total_amount += emoticon_amount
if answer[0] < plus_subscriber:
answer[0] = plus_subscriber
answer[1] = int(emoticon_total_amount)
elif answer[0] == plus_subscriber and answer[1] < emoticon_total_amount:
answer[1] = int(emoticon_total_amount)
return answer
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV.3] 표 병합 (파이썬/python) (0) | 2023.03.02 |
---|---|
[프로그래머스 LV 3] 표현 가능한 이진트리 (파이썬/python) (0) | 2023.02.19 |
[프로그래머스 LV 2] 개인 정보 수집 유효기간 (파이썬 / python) (0) | 2023.01.20 |
[프로그래머스 LV 3] 징검다리 건너기 (파이썬 / python ) (0) | 2022.10.18 |
[ 프로그래머스 LV 2 ] 주차 요금 계산 (파이썬 / python) (0) | 2022.10.18 |