2021. 7. 16. 18:00ใETC/Algorithm
๐๐ป ๋ฌธ์
๋ฏผํธ๋ ๋ค๋จ๊ณ ์กฐ์ง์ ์ด์ฉํ์ฌ ์นซ์์ ํ๋งคํ๊ณ ์์ต๋๋ค. ํ๋งค์์ด ์นซ์์ ํ๋งคํ๋ฉด ๊ทธ ์ด์ต์ด ํผ๋ผ๋ฏธ๋ ์กฐ์ง์ ํ๊ณ ์กฐ๊ธ์ฉ ๋ถ๋ฐฐ๋๋ ํํ์ ํ๋งค๋ง์ ๋๋ค. ์ด๋์ ๋ ํ๋งค๊ฐ ์ด๋ฃจ์ด์ง ํ, ์กฐ์ง์ ์ด์ํ๋ ๋ฏผํธ๋ ์กฐ์ง ๋ด ๋๊ฐ ์ผ๋ง๋งํผ์ ์ด๋์ ๊ฐ์ ธ๊ฐ๋์ง๊ฐ ๊ถ๊ธํด์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฏผํธ๊ฐ ์ด์ํ๊ณ ์๋ ๋ค๋จ๊ณ ์นซ์ ํ๋งค ์กฐ์ง์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค๊ณ ํฉ์๋ค.
๋ฏผํธ๋ center์ด๋ฉฐ, ํ๋์ ๋ค๋ชจ๋ ์ฌ๋ ๋ช ์ ํ๋งค์์ ํ์ํ ๊ฒ์ ๋๋ค. ๊ฐ๊ฐ์ ์์ ์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ถ์ฒ์ธ์ ์ฐ๊ฒฐ๋์ด ํผ๋ผ๋ฏธ๋ ์์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ์กฐ์ง์ ์ด์ต ๋ถ๋ฐฐ ๊ท์น์ ๊ฐ๋จํฉ๋๋ค. ๋ชจ๋ ํ๋งค์์ ์นซ์์ ํ๋งค์ ์ํ์ฌ ๋ฐ์ํ๋ ์ด์ต์์ 10% ๋ฅผ ๊ณ์ฐํ์ฌ ์์ ์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ถ์ฒ์ธ์๊ฒ ๋ฐฐ๋ถํ๊ณ ๋๋จธ์ง๋ ์์ ์ด ๊ฐ์ง๋๋ค. ๋ชจ๋ ํ๋งค์์ ์์ ์ด ์นซ์ ํ๋งค์์ ๋ฐ์ํ ์ด์ต ๋ฟ๋ง ์๋๋ผ, ์์ ์ด ์กฐ์ง์ ์ถ์ฒํ์ฌ ๊ฐ์ ์ํจ ํ๋งค์์๊ฒ์ ๋ฐ์ํ๋ ์ด์ต์ 10% ๊น์ง ์์ ์ ์ด์ต์ด ๋ฉ๋๋ค. ์์ ์๊ฒ ๋ฐ์ํ๋ ์ด์ต ๋ํ ๋ง์ฐฌ๊ฐ์ง์ ๊ท์น์ผ๋ก ์์ ์ ์ถ์ฒ์ธ์๊ฒ ๋ถ๋ฐฐ๋ฉ๋๋ค. ๋จ, 10% ๋ฅผ ๊ณ์ฐํ ๋์๋ ์ ๋จ์์์ ์ ์ฌํ๋ฉฐ, 10%๋ฅผ ๊ณ์ฐํ ๊ธ์ก์ด 1 ์ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ์๋ ์ด๋์ ๋ถ๋ฐฐํ์ง ์๊ณ ์์ ์ด ๋ชจ๋ ๊ฐ์ง๋๋ค.
์ ํ์ฌํญ
- enroll์ ๊ธธ์ด๋ 1 ์ด์ 10,000 ์ดํ์
๋๋ค.
- enroll์ ๋ฏผํธ์ ์ด๋ฆ์ ์์ต๋๋ค. ๋ฐ๋ผ์ enroll์ ๊ธธ์ด๋ ๋ฏผํธ๋ฅผ ์ ์ธํ ์กฐ์ง ๊ตฌ์ฑ์์ ์ด ์์ ๋๋ค.
- referral์ ๊ธธ์ด๋ enroll์ ๊ธธ์ด์ ๊ฐ์ต๋๋ค.
- referral ๋ด์์ i ๋ฒ์งธ์ ์๋ ์ด๋ฆ์ ๋ฐฐ์ด enroll ๋ด์์ i ๋ฒ์งธ์ ์๋ ํ๋งค์์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ฌ๋์ ์ด๋ฆ์ ๋๋ค.
- ์ด๋ ๋๊ตฌ์ ์ถ์ฒ๋ ์์ด ์กฐ์ง์ ์ฐธ์ฌํ ์ฌ๋์ ๋ํด์๋ referral ๋ฐฐ์ด ๋ด์ ์ถ์ฒ์ธ์ ์ด๋ฆ์ด ๊ธฐ์ ๋์ง ์๊ณ “-“ ๊ฐ ๊ธฐ์ ๋ฉ๋๋ค. ์ ์์ ์์๋ john ๊ณผ mary ๊ฐ ์ด๋ฌํ ์์ ํด๋นํฉ๋๋ค.
- enroll ์ ๋ฑ์ฅํ๋ ์ด๋ฆ์ ์กฐ์ง์ ์ฐธ์ฌํ ์์์ ๋ฐ๋ฆ ๋๋ค.
- ์ฆ, ์ด๋ ํ๋งค์์ ์ด๋ฆ์ด enroll ์ i ๋ฒ์งธ์ ๋ฑ์ฅํ๋ค๋ฉด, ์ด ํ๋งค์์ ์กฐ์ง์ ์ฐธ์ฌ์ํจ ์ฌ๋์ ์ด๋ฆ, ์ฆ referral ์ i ๋ฒ์งธ ์์๋ ์ด๋ฏธ ๋ฐฐ์ด enroll ์ j ๋ฒ์งธ (j < i) ์ ๋ฑ์ฅํ์์ด ๋ณด์ฅ๋ฉ๋๋ค.
- seller์ ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์
๋๋ค.
- seller ๋ด์ i ๋ฒ์งธ์ ์๋ ์ด๋ฆ์ i ๋ฒ์งธ ํ๋งค ์ง๊ณ ๋ฐ์ดํฐ๊ฐ ์ด๋ ํ๋งค์์ ์ํ ๊ฒ์ธ์ง๋ฅผ ๋ํ๋ ๋๋ค.
- seller ์๋ ๊ฐ์ ์ด๋ฆ์ด ์ค๋ณตํด์ ๋ค์ด์์ ์ ์์ต๋๋ค.
- amount์ ๊ธธ์ด๋ seller์ ๊ธธ์ด์ ๊ฐ์ต๋๋ค.
- amount ๋ด์ i ๋ฒ์งธ์ ์๋ ์๋ i ๋ฒ์งธ ํ๋งค ์ง๊ณ ๋ฐ์ดํฐ์ ํ๋งค๋์ ๋ํ๋ ๋๋ค.
- ํ๋งค๋์ ๋ฒ์, ์ฆ amount ์ ์์๋ค์ ๋ฒ์๋ 1 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์นซ์ ํ ๊ฐ๋ฅผ ํ๋งคํ์ฌ ์ป์ด์ง๋ ์ด์ต์ 100 ์์ผ๋ก ์ ํด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ์กฐ์ง ๊ตฌ์ฑ์๋ค์ ์ด๋ฆ์ 10 ๊ธ์ ์ด๋ด์ ์๋ฌธ ์ํ๋ฒณ ์๋ฌธ์๋ค๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์์
enroll | referral | seller | amount | result |
["john", "mary", "edward", "sam", "emily", "jaimie", "tod", "young"] | ["-", "-", "mary", "edward", "mary", "mary", "jaimie", "edward"] | ["young", "john", "tod", "emily", "mary"] | [12, 4, 2, 5, 10] | [360, 958, 108, 0, 450, 18, 180, 1080] |
["john", "mary", "edward", "sam", "emily", "jaimie", "tod", "young"] | ["-", "-", "mary", "edward", "mary", "mary", "jaimie", "edward"] | ["sam", "emily", "jaimie", "edward"] | [2, 3, 5, 4] | [0, 110, 378, 180, 270, 450, 0, 0] |
๐ ๋ฌธ์ ํด๊ฒฐ
ํด๊ฒฐ ๋ฐฉ๋ฒ
โ๏ธ enroll์ key๋ก, referral์ value ๋ก ๊ฐ๋ map ์์ฑ
โ๏ธ ๊ฐ enroll์ ์์ต๊ธ์ ์ ์ฅํ ๋ฐฐ์ด p๋ฅผ ์์ฑ ํ 0์ผ๋ก ์ด๊ธฐํ
โ๏ธ center์ด ๋์ฌ ๋๊น์ง ๋ถ๋ชจ์๊ฒ ์์ต๊ธ์ ๋ฐฐ๋ถํ ์ฌ๊ท ํจ์ ์์ฑ
โ๏ธ center์ด ๋์ค๊ฑฐ๋ ๋ฐฐ๋ถํ ๊ธ์ก์ด ์์ผ๋ฉด ์ฌ๊ท๋ฅผ ํ์ถ
์ฝ๋
#include <vector>
#include <map>
using namespace std;
void checkRef(map<string, string> &m, map<string, int> &p, string enroll, int price) {
if (price < 1) return;
if (enroll == "-") {
p[enroll] += price;
return;
}
p[enroll] += price - (int)(price * 0.1);
checkRef(m, p, m[enroll], price * 0.1);
}
vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
vector<int> answer;
map<string, string> m;
map<string, int> p;
for (int i = 0; i < enroll.size(); i++) {
m[enroll[i]] = referral[i];
p[enroll[i]] = 0;
}
for (int s=0; s < seller.size(); s++)
checkRef(m, p, seller[s], amount[s] * 100);
for (string e : enroll)
answer.push_back(p[e]);
return answer;
}
'ETC > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Programmers, ์์๋ง๋ค๊ธฐ (0) | 2021.11.27 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] N ์ผ๋ก ํํ (0) | 2021.07.17 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ ํ ๋๋ฆฌ ํ์ ํ๊ธฐ (0) | 2021.07.16 |
Brute Force, ํด์ฌ (0) | 2021.03.07 |
Greedy, ๊ตฌ๋ช ๋ณด๋ (0) | 2021.02.28 |
Backend Software Engineer
๐๐ฎ๐ง ยท ๐๐ฎ๐๐ค๐ฃ๐๐จ๐ช๐ฃ ๐๐๐ง๐