https://school.programmers.co.kr/learn/courses/30/lessons/150368
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from itertools import product
def solution(users, emoticons):
    register_user_count = 0
    max_price = 0
    discounts = product([10,20,30,40],repeat=len(emoticons))
    # 모든 할인율 중복 조합
    for discount in discounts:
        # 각 조합마다 산 유저 수 / 최대 판매 금액
        user_count = 0
        sum_price = 0
        # 각 유저마다
        for user in users:
            # 구매 비용
            paid = 0
            
            # 구매 비용 계산
            # 이모티콘마다
            for i in range(len(emoticons)):
                # 할인율이 유저 기준보다 높거나 같다면
                if(discount[i] >= user[0]):
                    # 구매 비용에 추가
                    rate = (100 - discount[i])
                    price100 = emoticons[i] * rate
                    # print(price100 // 100)
                    paid += price100 // 100
            
            # 본인이 낸 돈이 기준보다 높다면
            if(paid >= user[1]):
                # 이모티콘 플러스 등록
                user_count += 1
            # 아니라면
            else:
                # 총 판매금액에 추가
                sum_price += paid
        if(register_user_count < user_count):
            register_user_count = user_count
            max_price = sum_price
        elif (register_user_count == user_count):
            if(max_price < sum_price):
                max_price = sum_price
    
    return [register_user_count,max_price]
빠르게 풀 수 있는 방법은
파이썬 내장 라이브러리인
from itertools import product를 통해 중복순열을 구현하면 편하다.
어느 할인율이 가장 높은 가격을 가질지 확인할 수 없으며,
유저 수와 할인율의 제한이 100명, 4개씩 7개의 이모티콘의 종류만이 존재하므로
브루트포스 알고리즘을 통해서 충분히 구현 가능하다고 판단되므로, 모든 할인율의 순열을 뽑아서
각 할인율마다 사용자가
- 이모티콘 플러스를 구매할지
- 이모티콘을 개별 구매할지
판단하고, 이에 맞는 숫자를 갱신해나가면
마지막에 최대 사용자 수와 가격을 얻을 수 있다.
728x90
    
    
  '개발 > 문제풀이' 카테고리의 다른 글
| [BOJ 27211, Python] 도넛 행성 풀이 (0) | 2023.02.01 | 
|---|---|
| [BOJ 27210, Python] 신을 모시는 사당 풀이 (0) | 2023.02.01 | 
| 백준 1697,12851,13913 파이썬 풀이 (숨바꼭질 1, 숨바꼭질 2, 숨바꼭질 3) (0) | 2021.04.08 | 
| 백준 1927번 최소 힙 파이썬 문제풀이 (0) | 2021.02.15 | 
| 2월 1주차 백준 문제풀이 파이썬(듣보잡, 회의실 배정, 바이러스, 최대 힙, 집합 연결요소의 개수, 좌표압축) (0) | 2021.02.08 |