반응형
문제
2023 카카오 블라인드 채용 - 이모티콘 할인행사
https://school.programmers.co.kr/learn/courses/30/lessons/150368
풀이
설명
행사 목적을 최대한으로 달성했을 때의 이모티콘 플러스 서비스 가입 수와 이모티콘 매출액을 구하는 문제입니다.
서비스 가입자 수를 최대한 늘리고, 가입자 수가 같다면 판매액을 최대로 늘려야 합니다.
가능한 모든 조합을 구해 계산하면 됩니다.
예시 코드
function solution(users, emoticons) {
const discountRates = [10, 20, 30, 40];
const discounts = [];
let maxSubscribers = 0;
let maxSales = 0;
dfs(0);
return [maxSubscribers, Math.floor(maxSales)];
function dfs(depth) {
if (depth === emoticons.length) {
let subscribers = 0;
let totalSales = 0;
users.forEach(([minDiscount, minPrice]) => {
let totalPurchase = 0;
emoticons.forEach((price, i) => {
if (discounts[i] >= minDiscount)
totalPurchase += price * (1 - discounts[i] / 100);
});
if (totalPurchase >= minPrice) subscribers++;
else totalSales += totalPurchase;
});
if (
subscribers > maxSubscribers ||
(subscribers === maxSubscribers && totalSales > maxSales)
) {
maxSubscribers = subscribers;
maxSales = totalSales;
}
return;
}
for (const rate of discountRates) {
discounts.push(rate);
dfs(depth + 1);
discounts.pop();
}
}
}
'Coding Problem' 카테고리의 다른 글
[프로그래머스] 카카오 - 경주로 건설 (0) | 2025.02.02 |
---|---|
[프로그래머스] 카카오 - 수식 최대화 (0) | 2025.02.01 |
[프로그래머스] 카카오 - 파괴되지 않은 건물 (0) | 2025.01.30 |
[프로그래머스] 당구 연습 (0) | 2025.01.28 |
[프로그래머스] 월간 코드 챌린지 - 모두 0으로 만들기 (0) | 2025.01.27 |