본문 바로가기
프로그래머스

다단계 칫솔 C++

by paysmile 2021. 10. 3.

https://programmers.co.kr/learn/courses/30/lessons/77486?language=cpp

 

코딩테스트 연습 - 다단계 칫솔 판매

민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후,

programmers.co.kr

#include <string>
#include <vector>
#include <map>

using namespace std;
map<string,string> parent;
map<string,int> profit;

void MakeProfit(string name,int money){
    if(name == "-")   return;
    
    int give = money * 0.1;
    profit[name] = profit[name] + (money-give);
    if(give <1)     return;
    MakeProfit(parent[name],give);
}

vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
    vector<int> answer;
    
    for(int i=0; i<enroll.size(); i++){
        parent[enroll[i]] = referral[i];
    }
    
    for(int i=0; i<seller.size(); i++){
        MakeProfit(seller[i],amount[i]*100);
    }
    
    for(int i=0; i<enroll.size(); i++){
        answer.push_back(profit[enroll[i]]);
    }
    return answer;
}

'프로그래머스' 카테고리의 다른 글

도둑질 C++  (0) 2021.10.06
셔틀버스 C++  (0) 2021.10.03
불량 사용자 C++  (0) 2021.10.02
자물쇠와 열쇠 C++  (0) 2021.08.22
매출 하락 최소화 C++  (0) 2021.08.09