๐ ๋ฌธ์ ๋งํฌ
๋ค๋จ๊ณ ์นซ์ ํ๋งค
์ฝ๋ฉํ
์คํธ ์ฐ์ต - ๋ค๋จ๊ณ ์นซ์ ํ๋งค ๋ฌธ์ ์
๋๋ค.
๐ก ๋ฌธ์ ํ์
- ํธ๋ฆฌ ํํ์ ์กฐ์ง ์ ๋ณด(
enroll,referral)์ ํ๋งค ์ ๋ณด(seller,amount)๊ฐ ์ฃผ์ด์ง๋ค. - ๊ฐ ํ๋งค์์ ์์ ์ด ๋ฒ ๋์ 10%๋ฅผ ์์ ์ ์ถ์ฒํ ์ฌ๋(๋ถ๋ชจ ๋ ธ๋)์๊ฒ ์ง๊ธํ๊ณ , ๋๋จธ์ง๋ฅผ ์์ ์ด ๊ฐ์ง๋ค.
- ๋ถ๋ชจ์๊ฒ ์ ๋ฌ๋ ๋ ์ญ์ ๊ฐ์ ๊ท์น์ผ๋ก ๋ค์ 10%๊ฐ ๊ทธ ์ ๋ถ๋ชจ์๊ฒ ์ ๋ฌ๋๋ค.
- ๋ชจ๋ ํ๋งค๊ฐ ๋๋ ๋ค, ๊ฐ ์กฐ์ง์์ด ์ ํํ ์ผ๋ง๋ฅผ ๋ฒ์๋์ง ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
๐๏ธ ์ ๊ทผ ๋ฐฉ๋ฒ
- ๊ฐ ํ๋งค์์ ๋ถ๋ชจ(์ถ์ฒ์ธ)๋ฅผ ์ ์ฅํ๋
parentMap์ ๋จผ์ ๊ตฌ์ฑํ๋ค. - ํ๋งค ์ ๋ณด ํ๋๋ง๋ค ํ๋งค ๊ธ์ก์ ๋ค๊ณ ๋ถ๋ชจ ๋
ธ๋๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด์ 10%์ฉ ๋ถ๋ฐฐํ๋ค.
- ๋ถ๋ฐฐํ ๊ธ์ก์ด 1์ ๋ฏธ๋ง(์ ์ ๋๋์ ๊ฒฐ๊ณผ 0)์ด ๋๋ฉด ๋ ์ด์ ์๋ก ์ ๋ฌํ์ง ์๊ณ ์ข ๋ฃํ๋ค.
- ๋ฃจํธ(
"-")์ ๋๋ฌํด๋ ์ข ๋ฃํ๋ค.
- ๊ธ์ก์ ๋ค๋ฃฐ ๋ ์ค๊ฐ ๊ณ์ฐ๊ฐ์ด
int๋ฒ์๋ฅผ ๋์ด์ค ์ ์์ผ๋ฏ๋กlong์ผ๋ก ๋์ ํ ๋ค ๋ง์ง๋ง์ ๋ณํํ๋ค.
๐งฉ ์ฝ๋ ๊ตฌํ
import java.util.*;
class Solution {
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
Map<String, String> parentMap = new HashMap<>();
for (int i = 0; i < enroll.length; ++i) {
parentMap.put(enroll[i], referral[i]);
}
Map<String, Long> profitMap = new HashMap<>();
for (int i = 0; i < seller.length; ++i) {
String cur = seller[i];
long money = (long) amount[i] * 100;
while (!cur.equals("-")) {
long distributedMoney = money / 10;
long myMoney = money - distributedMoney;
profitMap.merge(cur, myMoney, Long::sum);
if (distributedMoney == 0) break;
cur = parentMap.getOrDefault(cur, "-");
money = distributedMoney;
}
}
int[] answer = new int[enroll.length];
for (int i = 0; i < enroll.length; ++i) {
answer[i] = profitMap.getOrDefault(enroll[i], 0L).intValue();
}
return answer;
}
}