์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- tcp ํ๋กํ ์ฝ
- ํ๋ ์ ๊ตฌ์กฐ
- IEEE 802
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋น์ฃผ๊ธฐ์ ํธ
- 99ํด๋ฝ
- ์ฐ๋ถํฌdb
- ํ๋ก์ด๋์์
- ์์๋ฒํธ
- xv6
- ์ค๋ฅ์ ์ด
- leetcode
- ํ ํฐ ๋ฒ์ค
- ์ค๋ธ์
- well known ํฌํธ
- reducible
- ํญํด99
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- tcp ์ธ๊ทธ๋จผํธ
- ์ค๋ฅ๊ฒ์ถ
- ๊ฐ๋ฐ์์ทจ์
- ๋ฐ์ดํฐ ์ ์ก
- ์ค๋ ๋
- mariadb
- ์ฃผ๊ธฐ์ ํธ
- i-type
- til
- ์ฝ๋ฉํ ์คํธ์ค๋น
- git merge
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
Unfazedโ๏ธ๐ฏ
[Java] ํธ๋ฆฌ, ๊ตฌํ | ํ๋ก๊ทธ๋๋จธ์ค ๋ค๋จ๊ณ ์นซ์ ํ๋งค ๋ณธ๋ฌธ
[Java] ํธ๋ฆฌ, ๊ตฌํ | ํ๋ก๊ทธ๋๋จธ์ค ๋ค๋จ๊ณ ์นซ์ ํ๋งค
9taetae9 2024. 11. 6. 10:59https://school.programmers.co.kr/learn/courses/30/lessons/77486
๋ฌธ์ ๊ฐ์
๋ค๋จ๊ณ ํ๋งค ์กฐ์ง์์ ๊ฐ ํ๋งค์์ ์ด์ต์ ๊ณ์ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๊ฒ์ด ๋ชฉํ์๋ค.
์ฃผ์ ๊ท์น์ ์๋์ ๊ฐ๋ค.
- ํ๋งค์์ด ๋ฐ์์ํจ ์ด์ต์ 10%๋ฅผ ์ถ์ฒ์ธ์๊ฒ ๋ถ๋ฐฐ(1์ ๋ฏธ๋ง์ ๋ถ๋ฐฐํ์ง ์์)
- ๋๋จธ์ง๋ ์์ ์ด ๊ฐ์ง
- ์ด ๊ณผ์ ์ด ์ฌ๊ท์ ์ผ๋ก ์์ ์ถ์ฒ์ธ์๊ฒ๋ ์ ์ฉ๋จ
์ฒ์ ์๋ํ ๋ฐฉ๋ฒ
class Node {
String name;
Node parent;
int income;
}
- ์ฒ์์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด Node ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ฌธ์ ํด๊ฒฐ์ ์๋ํด๋ณด์๋ค.
- ๊ฐ ํ๋งค์์ ๋ ธ๋๋ก ์์ฑํ๊ณ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํ๋ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ์ง๋ง
- ํ๋งค์ ๊ฒ์๊ณผ ์์ต ๊ฐฑ์ ๊ณผ์ ์ ์์ด์ ์ฑ๋ฅ์ด ์ข์ง ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
- ์๋ฃ๊ตฌ์กฐ ์ ํ
- HashMap์ ํ์ฉํ์ฌ ๋ ๊ฐ์ง ๋งคํ ๊ด๊ณ๋ฅผ ์ ์ฅ
- worker : ํ๋งค์ -> ์ถ์ฒ์ธ ๊ด๊ณ // Map<String, String> worker = new HashMap<>();
- ํ๋งค์๋ค์ ๊ด๊ณ๋ฅผ ํด์๋งต worker๋ก ํํ
- income: ํ๋งค์ -> ์์ต๊ธ ๊ด๊ณ // Map<String, Integer> income = new HashMap<>();
- ํ๋งค์ ์ด๋ฆ์ ํค๋ก, ๋์ ์ด์ต์ ๊ฐ์ผ๋ก ํ๋ ํด์๋งต income์ ์ฌ์ฉ
- HashMap์ ํ์ฉํ์ฌ ๋ ๊ฐ์ง ๋งคํ ๊ด๊ณ๋ฅผ ์ ์ฅ
for(int i=0; i < enroll.length; i++){
worker.put(enroll[i], referral[i]);
income.put(enroll[i], 0);
}
- ์ด์ต ๋ถ๋ฐฐ ๋ก์ง
- ์ด ์ด์ต = ๊ฐ ํ๋งค ๊ฑด์ * 100
- ์์ ์ถ์ฒ์ธ์ผ๋ก ์ฌ๋ผ๊ฐ๋ฉด์ 10% ๋ถ๋ฐฐ, ๋๋จธ์ง๋ ์์ ์ด ๊ฐ์ง
- ๋ถ๋ฐฐ ๊ธ์ก์ด 0์ด ๋ ๋๊น์ง ๋ฐ๋ณต
- ๋ฐ๋ณต ์ข ๋ฃ ์กฐ๊ฑด : ์ถ์ฒ์ธ ์๋ ๊ฒฝ์ฐ ("-"), ๋ถ๋ฐฐํ ์ด์ต์ด ์์ ๊ฒฝ์ฐ (currentIncome > 0)
for(int i=0; i < seller.length; i++){
String currentSeller = seller[i];
int currentIncome = amount[i] * 100;
while(!currentSeller.equals("-") && currentIncome > 0){
int shareIncome = currentIncome/10;
int earn = currentIncome - shareIncome;
income.put(currentSeller, income.get(currentSeller)+earn);
currentSeller = worker.get(currentSeller);
currentIncome = shareIncome;
}
}
๋ฐฐ์ด ์
์ฒ์ ์ ๊ทผํ seller์ ๋ํ ๋ ธ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ํฌ์ธํฐ๋ก ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ์ง๋ง ์ฑ๋ฅ์ด ์ข์ง ์์๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ(ex : ๋ค๋จ๊ณ) => ํด๋น ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋จ์ ์ํฅ ํ์๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ HashMap์ผ๋ก ๊ตฌํ์ด ์ถฉ๋ถํ๋ค. ํด๋น ๋ฌธ์ ์ ์ค์ ๋ก ํ์ํ ๊ตฌํ๋ง ํ๋ฉด ๋์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํ ๋๋ Node ํด๋์ค์ ๊ตฌํ์ด ํด๋น ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ์์ด์ ์ ๋ง ์ต์ ์ธ์ง ๋ค์ ์๊ฐํด๋ด์ผ๊ฒ ๋ค.
๋ํ ๋น๋ฒํ ์กฐํ๊ฐ ํ์ํ ์ํฉ, ๋ฐ์ดํฐ ๊ฐ ๊ด๊ณ๋ฅผ ํํํด์ผ ํ๋ ๊ฒฝ์ฐ์ผ ๋ HashMap ํ์ฉ์ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํด๋ณด์์ผ๊ฒ ๋ค.
'๋ฌธ์ ํด๊ฒฐ (PS) > ์ฝํ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ ๋ ฌ | ๋ฐฑ์ค 1461 ๋์๊ด (0) | 2024.11.07 |
---|---|
[Java] ํฌํฌ์ธํฐ | ๋ฐฑ์ค 1253 ์ข๋ค (0) | 2024.11.07 |
[Java] ๋๋น ์ฐ์ ํ์ BFS| ๋ฐฑ์ค 1240 ๋ ธ๋์ฌ์ด์ ๊ฑฐ๋ฆฌ (0) | 2024.11.04 |
[Java] ํ๋ก์ด๋-์์ , DFS | ๋ฐฑ์ค 2458 ํค ์์ (0) | 2024.11.03 |
[Java] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ | ๋ฐฑ์ค 2457 ๊ณต์ฃผ๋์ ์ ์ (0) | 2024.11.02 |