diff --git "a/hanoong7/\353\213\244\353\213\250\352\263\204 \354\271\253\354\206\224 \355\214\220\353\247\244" "b/hanoong7/\353\213\244\353\213\250\352\263\204 \354\271\253\354\206\224 \355\214\220\353\247\244" new file mode 100644 index 0000000..76c789d --- /dev/null +++ "b/hanoong7/\353\213\244\353\213\250\352\263\204 \354\271\253\354\206\224 \355\214\220\353\247\244" @@ -0,0 +1,74 @@ +//풀이1 +#include +#include +#include + +using namespace std; + +vector solution(vector enroll, vector referral, vector seller, vector amount) { + vector answer(enroll.size()); + string Seller; + string Recommender; + int money = 0; + int give = 0; + int cycle = 0; + int SellerIndex = 0; + int RecommenderIndex = 0; + for (cycle = 0; cycle < seller.size(); cycle++) { + Seller = seller[cycle]; + money = amount[cycle] * 100; + SellerIndex = find(enroll.begin(), enroll.end(), Seller) - enroll.begin(); + Recommender = referral[SellerIndex]; + RecommenderIndex = find(enroll.begin(), enroll.end(), Recommender) - enroll.begin(); + while (Recommender != "-") { + if (money / 10 < 1) break; + give = money / 10; + answer[SellerIndex] += money - give; + money = give; + Seller = Recommender; + SellerIndex = find(enroll.begin(), enroll.end(), Seller) - enroll.begin(); + Recommender = referral[SellerIndex]; + RecommenderIndex = find(enroll.begin(), enroll.end(), Recommender) - enroll.begin(); + } + give = money / 10; + answer[SellerIndex] += money - give; + } + return answer; +} + + +//풀이2 +#include +#include +#include + +using namespace std; + +map parent; +map gain; + +void update_gain(string now, int sell_gain) { + if (now == "-")return; + int delivery = sell_gain * 0.1; + gain[now] += sell_gain - delivery; + if (delivery == 0)return; + update_gain(parent[now], delivery); +} + +vector solution(vector enroll, vector referral, vector seller, vector amount) { + vector answer; + + for (int i = 0; i < enroll.size(); i++) { + parent[enroll[i]] = referral[i]; + } + + for (int i = 0; i < seller.size(); i++) { + update_gain(seller[i], amount[i] * 100); + } + + for (int i = 0; i < enroll.size(); i++) { + answer.push_back(gain[enroll[i]]); + } + + return answer; +}