[프로그래머스 C++] 이모티콘 할인행사
[프로그래머스 C++] 이모티콘 할인행사
https://school.programmers.co.kr/learn/courses/30/lessons/150368
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결전략
구현
깊이우선탐색 DFS
정답코드
#include <iostream> #include <algorithm> #include <vector> using namespace std; int n, m; vector<int> answer(2); int discount[4] = { 10, 20, 30, 40 }; vector<pair<int, int>> price(7); // 이모티콘 가격, 할인율 void DFS(int idx, const vector<vector<int>>& users, const vector<int>& emo) { if(idx == m) { int ppl = 0, sumPrice = 0; // ppl: 구독자 수, sumPrice: 이모티콘들을 구매해서 지불해야할 비용 for(int i = 0; i < n; i++) { int temp = 0; // 이모티콘 구매비용 for(int j = 0; j < m; j++){ if(users[i][0] <= price[j].second){ // 할인율을 만족해 이모티콘을 구입하는 경우 temp += price[j].first; // 구매비용 누적 } } if(temp >= users[i][1]){ // 구매비용이 사용자가 준비한 금액보다 많은 경우 구독 ppl++; } else{ sumPrice += temp; } } if(answer[0] < ppl){ // 가입자 수가 더 많은 경우 갱신 answer[0] = ppl; answer[1] = sumPrice; } else if (answer[0] == ppl && answer[1] <= sumPrice) { // 가입자 수는 같지만 구매비용이 더 많은 경우 answer[1] = sumPrice; } return; } for (int i = 0; i < 4; i++) { price[idx].first = (100 - discount[i]) * emo[idx] / 100; // 할인된 이모티콘 가격 price[idx].second = discount[i]; // 할인율 DFS(idx + 1, users, emo); } } vector<int> solution(vector<vector<int>> users, vector<int> emo) { n = users.size(); m = emo.size(); DFS(0, users, emo); return answer; } int main(){ vector<vector<int>> test1 = { {40, 10000}, {25, 10000} }; vector<vector<int>> test2 = { {40, 2900},{23, 10000},{11, 5200},{5, 5900},{40, 3100},{27, 9200},{32, 6900 }}; vector<int> testcase1 = { 7000, 9000 }; vector<int> testcase2 = { 1300, 1500, 1600, 4900 }; solution(test1, testcase1); solution(test2, testcase2); return 0; }
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 혼자서 하는 틱택토 (1) | 2024.03.22 |
---|---|
[프로그래머스 C++] 가장 긴 팰린드롬 (0) | 2024.03.20 |
[프로그래머스 C++] 두 원 사이의 정수 쌍 (0) | 2024.03.17 |
[프로그래머스 C++] 과제 진행하기 (0) | 2024.03.13 |
[프로그래머스 C++] 혼자 놀기의 달인 (0) | 2024.03.11 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 혼자서 하는 틱택토
[프로그래머스 C++] 혼자서 하는 틱택토
2024.03.22 -
[프로그래머스 C++] 가장 긴 팰린드롬
[프로그래머스 C++] 가장 긴 팰린드롬
2024.03.20 -
[프로그래머스 C++] 두 원 사이의 정수 쌍
[프로그래머스 C++] 두 원 사이의 정수 쌍
2024.03.17 -
[프로그래머스 C++] 과제 진행하기
[프로그래머스 C++] 과제 진행하기
2024.03.13
댓글을 사용할 수 없습니다.