csct3434
[level 2] 이모티콘 할인행사 - 150368 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
private int subscribe = 0;
private int purchase = 0;
private static int[] rate = {10, 20, 30, 40};
public int[] solution(int[][] users, int[] emoticons) {
func(users, emoticons, new int[emoticons.length], 0);
return new int[]{subscribe, purchase};
}
private void func(int[][] users, int[] emoticons, int[] discount, int count) {
if (count == emoticons.length) {
solve(users, emoticons, discount);
return;
}
for (int i = 0; i < 4; i++) {
discount[count] = rate[i];
func(users, emoticons, discount, count + 1);
}
}
private void solve(int[][] users, int[] emoticons, int[] discount) {
int[] purchaseAmount = new int[users.length];
for (int i = 0; i < users.length; i++) {
for (int j = 0; j < emoticons.length; j++) {
if (users[i][0] <= discount[j]) {
purchaseAmount[i] += (emoticons[j] / 100) * (100 - discount[j]);
}
}
}
int sub = 0, total = 0;
for (int i = 0; i < users.length; i++) {
if (purchaseAmount[i] >= users[i][1]) {
sub++;
} else {
total += purchaseAmount[i];
}
}
if (sub > subscribe) {
subscribe = sub;
purchase = total;
}
if (sub == subscribe) {
purchase = Math.max(purchase, total);
}
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] 요격 시스템 - 181188 (0) | 2024.02.29 |
---|---|
[level 2] 과제 진행하기 - 176962 (0) | 2024.02.29 |
[level 2] 마법의 엘리베이터 - 148653 (0) | 2024.02.29 |
[level 2] 숫자 카드 나누기 - 135807 (0) | 2024.02.29 |
[level 2] 우박수열 정적분 - 134239 (0) | 2024.02.29 |