728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/77486
문제 풀이
처음 이 문제를 봤을때 사실 트리로 이걸 어떻게 구현하나 고민하였었다. 근데 생각해보니 트리는 자료구조와 while문을 잘 활용하여 충분히 구현가능하다는 것을 느끼고 처음 접근을 빠르게 하기 위해 해쉬맵에 자식 부모 해시맵을 생성한 후 점수 해시맵을 통하여 while문을 통하여 점수를 계속 갱신해주는 방식으로 풀면 된다.
코드
import java.util.*;
class Solution {
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
HashMap<String, String> parent = new HashMap<>();
for(int i=0; i<enroll.length; i++){
parent.put(enroll[i], referral[i]);
}
HashMap<String, Integer> total = new HashMap<>();
for(int i=0; i<seller.length; i++){
String person = seller[i];
int money = amount[i] * 100;
while(money > 0 && !person.equals("-")){
total.put(person, total.getOrDefault(person, 0) + money - (money / 10));
person = parent.get(person);
money /= 10;
}
}
int[] answer = new int[enroll.length];
for(int j=0; j<enroll.length; j++){
answer[j] = total.getOrDefault(enroll[j], 0);
}
return answer;
}
}
완성
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준] 8979번: 올림픽 - java (0) | 2024.09.11 |
---|---|
[프로그래머스] 예상 대진표 - java (0) | 2024.08.12 |
[프로그래머스] 완주하지 못한 선수 - java (0) | 2024.08.11 |
[프로그래머스] 기능개발 - java (0) | 2024.08.11 |
[프로그래머스] 짝지어 제거하기 - java (0) | 2024.08.08 |