Algorithm (PS)

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

minjiwoo 2023. 1. 13. 19:27
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/150368

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

total_member = 0 
total_profit = 0 
rates = [10, 20, 30, 40]
def calc(rate_list, users, emoticons):
    temp_member = 0 
    temp_profit = 0 
    for user in users:
        rate, money = user
        user_profit = 0 
        
        for i in range(len(emoticons)):
            if rate_list[i] >= rate:
                user_profit += emoticons[i] * (1 - (rate_list[i]*0.01))
        if user_profit >= money:
            temp_member += 1
        else:
            temp_profit += user_profit 
    return temp_member, temp_profit
    

def dfs(count, rate_list, users, emoticons):
    global total_member, total_profit, rates
    
    if count == len(emoticons):
        temp_member, temp_profit = calc(rate_list, users, emoticons)
        if total_member < temp_member:
            total_member = temp_member
            total_profit = temp_profit
        elif total_member == temp_member:
            total_profit = max(temp_profit, total_profit)
        return # dfs 종료 
    
    for i in range(4):
        dfs(count+1, rate_list+[rates[i]], users, emoticons)

def solution(users, emoticons):
    global total_member, total_profit 
    dfs(0, [], users, emoticons)
    answer = [total_member, total_profit]
    return answer
728x90