[프로그래머스] 이모티콘 할인행사

rhkr9080·2023년 12월 16일
0

프로그래머스

목록 보기
13/19

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150368

💻 문제 풀이 : Python

⭐ 내 풀이
discount_per = [10, 20, 30, 40]
temp_per = []
temp_answer = [0, 0]

def get_answer(subs, emoticons, select):
    temp_subs, temp_sales, temp_sum = 0, 0, 0
    for sub in subs:
        for i in range(len(emoticons)):
            # 정한 할인율보다 크면 구매
            if sub[0] <= select[i]:
                temp_sales += emoticons[i] * (100 - select[i]) / 100
        # 자기가 정한 금액 이상이면 구독
        if temp_sales >= sub[1]:
            temp_subs += 1
            temp_sales = 0
        else:
            temp_sum += temp_sales
            temp_sales = 0
    return temp_subs, temp_sum

def dfs(subs, emoticons, select, depth):
    # 할인율 정하기
    if (depth == len(select)):
        temp_subs, temp_sum = get_answer(subs, emoticons, select)
        # 1. 서비스 가입자 최대
        if (temp_subs > temp_answer[0]):
            temp_answer = [temp_subs, temp_sum]
        # 2. 판매액 최대
        elif (temp_subs == temp_answer[0]):
            if (temp_sum >= temp_answer[1]):
                temp_answer = [temp_subs, temp_sum]
        return
    
    for per in discount_per:
        select[depth] = per
        dfs(subs, emoticons, select, depth+1)
        select[depth] = 0

def solution(subs, emoticons):
    dfs(subs, emoticons, [0] * len(emoticons), 0)
    answer = temp_answer
    return answer

📌 memo

🔹 파이썬 전역변수
global 로 선언하고, 다시 정의해야함.

def myFunc():
	global myVar1
    global myVar2
    myVar1 = "Not easy"
    myVar2 = "To use
    
def main():
	global myVar1
    global myVar2
    myVar1 = "To Create"
    myVar2 = "Global variables
    myFunc()

=> 리스트로 선언해서 사용

myVarList = []

def myFunc():
	myVar1 = "So easy"
	myVar2 = "To use"
    myVarList = [myVar1, myVar2]
    
 def main():
 	myFunc()

더 좋은 방법이 있을까...?

🔹itertools의 product 라이브러리

from itertools import product

def myFunc():
	select = product([10, 20, 30, 40], repeat=len(emoticons))
profile
공부방

0개의 댓글