https://school.programmers.co.kr/learn/courses/30/lessons/77486
๋ฌธ์ ์ค๋ช
๋ฏผํธ๋ ๋ค๋จ๊ณ ์กฐ์ง์ ์ด์ฉํ์ฌ ์นซ์์ ํ๋งคํ๊ณ ์์ต๋๋ค. ํ๋งค์์ด ์นซ์์ ํ๋งคํ๋ฉด ๊ทธ ์ด์ต์ด ํผ๋ผ๋ฏธ๋ ์กฐ์ง์ ํ๊ณ ์กฐ๊ธ์ฉ ๋ถ๋ฐฐ๋๋ ํํ์ ํ๋งค๋ง์ ๋๋ค. ์ด๋์ ๋ ํ๋งค๊ฐ ์ด๋ฃจ์ด์ง ํ, ์กฐ์ง์ ์ด์ํ๋ ๋ฏผํธ๋ ์กฐ์ง ๋ด ๋๊ฐ ์ผ๋ง๋งํผ์ ์ด๋์ ๊ฐ์ ธ๊ฐ๋์ง๊ฐ ๊ถ๊ธํด์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฏผํธ๊ฐ ์ด์ํ๊ณ ์๋ ๋ค๋จ๊ณ ์นซ์ ํ๋งค ์กฐ์ง์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค๊ณ ํฉ์๋ค.
๋ฏผํธ๋ center์ด๋ฉฐ, ํ๋์ ๋ค๋ชจ๋ ์ฌ๋ ๋ช ์ ํ๋งค์์ ํ์ํ ๊ฒ์ ๋๋ค. ๊ฐ๊ฐ์ ์์ ์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ถ์ฒ์ธ์ ์ฐ๊ฒฐ๋์ด ํผ๋ผ๋ฏธ๋ ์์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ์กฐ์ง์ ์ด์ต ๋ถ๋ฐฐ ๊ท์น์ ๊ฐ๋จํฉ๋๋ค. ๋ชจ๋ ํ๋งค์์ ์นซ์์ ํ๋งค์ ์ํ์ฌ ๋ฐ์ํ๋ ์ด์ต์์ 10% ๋ฅผ ๊ณ์ฐํ์ฌ ์์ ์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ถ์ฒ์ธ์๊ฒ ๋ฐฐ๋ถํ๊ณ ๋๋จธ์ง๋ ์์ ์ด ๊ฐ์ง๋๋ค. ๋ชจ๋ ํ๋งค์์ ์์ ์ด ์นซ์ ํ๋งค์์ ๋ฐ์ํ ์ด์ต ๋ฟ๋ง ์๋๋ผ, ์์ ์ด ์กฐ์ง์ ์ถ์ฒํ์ฌ ๊ฐ์ ์ํจ ํ๋งค์์๊ฒ์ ๋ฐ์ํ๋ ์ด์ต์ 10% ๊น์ง ์์ ์ ์ด์ต์ด ๋ฉ๋๋ค. ์์ ์๊ฒ ๋ฐ์ํ๋ ์ด์ต ๋ํ ๋ง์ฐฌ๊ฐ์ง์ ๊ท์น์ผ๋ก ์์ ์ ์ถ์ฒ์ธ์๊ฒ ๋ถ๋ฐฐ๋ฉ๋๋ค. ๋จ, 10% ๋ฅผ ๊ณ์ฐํ ๋์๋ ์ ๋จ์์์ ์ ์ฌํ๋ฉฐ, 10%๋ฅผ ๊ณ์ฐํ ๊ธ์ก์ด 1 ์ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ์๋ ์ด๋์ ๋ถ๋ฐฐํ์ง ์๊ณ ์์ ์ด ๋ชจ๋ ๊ฐ์ง๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ํ๋งค ๊ธฐ๋ก์ด ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ์นซ์์ ํ๋งค์์ ๋ฐ์ํ๋ ์ด์ต์ ๊ฐ๋น 100 ์์ผ๋ก ์ ํด์ ธ ์์ต๋๋ค.
ํ๋งค์ ํ๋งค ์๋ ์ด์ต๊ธ
young | 12 | 1,200 ์ |
john | 4 | 400 ์ |
tod | 2 | 200 ์ |
emily | 5 | 500 ์ |
mary | 10 | 1,000 ์ |
ํ๋งค์ young ์ ์ํ์ฌ 1,200 ์์ ์ด์ต์ด ๋ฐ์ํ์ต๋๋ค. young ์ ์ด ์ค 10% ์ ํด๋นํ๋ 120 ์์, ์์ ์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ถ์ฒ์ธ์ธ edward ์๊ฒ ๋ฐฐ๋ถํ๊ณ ์์ ์ ๋๋จธ์ง์ธ 1,080 ์์ ๊ฐ์ง๋๋ค. edward ๋ young ์๊ฒ์ ๋ฐ์ 120 ์ ์ค 10% ์ธ 12 ์์ mary ์๊ฒ ๋ฐฐ๋ถํ๊ณ ์์ ์ ๋๋จธ์ง์ธ 108 ์์ ๊ฐ์ง๋๋ค. 12 ์์ edward ๋ก๋ถํฐ ๋ฐ์ mary ๋ 10% ์ธ 1 ์์ ์ผํฐ์ (์ฆ, ๋ฏผํธ์๊ฒ) ๋ฐฐ๋ถํ๊ณ ์์ ์ ๋๋จธ์ง์ธ 11 ์์ ๊ฐ์ง๋๋ค. ์ด ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๊ทธ ํ, ํ๋งค์ john ์ ์ํ์ฌ 400 ์์ ์ด์ต์ด ๋ฐ์ํฉ๋๋ค. john ์ 10% ์ธ 40 ์์ ์ผํฐ์ ๋ฐฐ๋ถํ๊ณ ์์ ์ด ๋๋จธ์ง์ธ 360 ์์ ๊ฐ์ง๋๋ค. ์ด ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋ ๊ทธ ํ์๋ ํ๋งค์ tod ์ ์ํ์ฌ 200 ์ ์ด์ต์ด ๋ฐ์ํ๋๋ฐ, tod ์์ ์ด 180 ์์, ์ถ์ฒ์ธ์ธ jaimie ๊ฐ ๊ทธ ์ค 10% ์ธ 20 ์์ ๋ฐ์์ 18 ์์ ๊ฐ์ง๊ณ , jaimie ์ ์ถ์ฒ์ธ์ธ mary ๋ 2 ์์ ๋ฐ์ง๋ง ์ด๊ฒ์ 10% ๋ ์ ๋จ์์์ ์ ์ฌํ๋ฉด ๋ฐฐ๋ถํ ๊ธ์ก์ด ์๊ธฐ ๋๋ฌธ์ mary ๋ 2 ์์ ๋ชจ๋ ๊ฐ์ง๋๋ค. ์ด ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๊ทธ ๋ค์์ผ๋ก emily ๊ฐ ์นซ์ ํ๋งค๋ฅผ ํตํ์ฌ ์ป์ ์ด์ต 500 ์์ ๋ง์ฐฌ๊ฐ์ง์ ๊ท์น์ ๋ฐ๋ผ emily ์๊ฒ 450 ์, mary ์๊ฒ 45 ์, ๊ทธ๋ฆฌ๊ณ ์ผํฐ์ 5 ์์ผ๋ก ๋ถ๋ฐฐ๋ฉ๋๋ค. ์ด ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ํ๋งค์ mary ๋ 1,000 ์์ ์ด์ต์ ๋ฌ์ฑํ๊ณ , ์ด ์ค 10% ์ธ 100 ์์ ์ผํฐ์ ๋ฐฐ๋ถํ ํ ๊ทธ ๋๋จธ์ง์ธ 900 ์์ ์์ ์ด ๊ฐ์ง๋๋ค. ์ด ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์์ ๊ฐ์ด ํ์ฌ ๋ชจ๋ ์กฐ์ง ๊ตฌ์ฑ์๋ค์ ์ด์ต ๋ฌ์ฑ ํํฉ ์ง๊ณ๊ฐ ๋๋ฌ์ต๋๋ค. ์ง๊ธ๊น์ง ์ป์ ์ด์ต์ ๋ชจ๋ ํฉํ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ด ๊ฒฐ๊ณผ๊ฐ ๋ฏผํธ๊ฐ ํ์ ํ๊ณ ์ ํ๋ ์ด์ต ๋ฐฐ๋ถ ํํฉ์ ๋๋ค.
๊ฐ ํ๋งค์์ ์ด๋ฆ์ ๋ด์ ๋ฐฐ์ด enroll, ๊ฐ ํ๋งค์์ ๋ค๋จ๊ณ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ๋ค๋ฅธ ํ๋งค์์ ์ด๋ฆ์ ๋ด์ ๋ฐฐ์ด referral, ํ๋งค๋ ์ง๊ณ ๋ฐ์ดํฐ์ ํ๋งค์ ์ด๋ฆ์ ๋์ดํ ๋ฐฐ์ด seller, ํ๋งค๋ ์ง๊ณ ๋ฐ์ดํฐ์ ํ๋งค ์๋์ ๋์ดํ ๋ฐฐ์ด amount๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ํ๋งค์์ด ๋ํ ์ด์ต๊ธ์ ๋์ดํ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ํ๋งค์์๊ฒ ๋ฐฐ๋ถ๋ ์ด์ต๊ธ์ ์ดํฉ์ ๊ณ์ฐํ์ฌ(์ ์ํ์ผ๋ก), ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง enroll์ ์ด๋ฆ์ด ํฌํจ๋ ์์์ ๋ฐ๋ผ ๋์ดํ๋ฉด ๋ฉ๋๋ค.
๋ด ํ์ด
unordered_map์ ํ์ฉํด ๋น ๋ฅด๊ฒ ๊ฒ์ํ๋ฉฐ ์์ต์ ๊ณ์ฐํด์ฃผ๋ ๊ฒ์ด ํฌ์ธํธ์ด๋ค.
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
unordered_map<string, string> parent;
unordered_map<string, int> result;
void ProfitSharing(string seller, int revenu)
{
string curSeller = seller;
int curRevenu = revenu;
while(curSeller != "center" && curRevenu >= 1.f)
{
int tenPercent = curRevenu * 0.1f;
curRevenu -= tenPercent;
result[curSeller] += curRevenu;
curRevenu = tenPercent;
curSeller = parent[curSeller];
}
}
vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
vector<int> answer(enroll.size(), 0);
for(int i = 0; i < enroll.size(); ++i)
{
if(referral[i] == "-")
{
parent.insert({enroll[i], "center"});
continue;
}
parent.insert({enroll[i], referral[i]});
result.insert({enroll[i], 0});
}
for(int i = 0; i < seller.size(); ++i)
ProfitSharing(seller[i], amount[i] * 100);
for(int i = 0; i < enroll.size(); ++i)
answer[i] = result[enroll[i]];
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ถ๋๋ณต๊ท (C++) (0) | 2023.10.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ์ฐพ๊ธฐ(C++) (0) | 2023.09.28 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ซ์ ๋ณํํ๊ธฐ (C++) (0) | 2023.09.22 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++) (0) | 2023.09.21 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ณด์ ์ผํ (C++) (0) | 2023.09.20 |