[프로그래머스] LV3. 다단계 칫솔 판매

인스·2025년 6월 24일

💡풀이

  • parent 해시맵에 판매원과 추천인 넣기
  • seller과 amount 배열 하나씩 계산 함수 실행 (calculate)
  • 해당 판매원의 money 해시에 이익 계산해서 넣기
  • parent 해시에서 그 판매원의 추천인 찾아서(containsKey) 재귀로 10% 계산 실행
import java.util.*;

class Solution {
    Map<String, String> parent = new HashMap<>();
    Map<String, Integer> money = new HashMap<>();
    
    public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
    	// 판매원과 추천인 정보 넣기
        for(int i = 0; i<enroll.length; i++){
            parent.put(enroll[i], referral[i]);
        }

        for(int i = 0; i<seller.length; i++){
            calculate(seller[i], amount[i] * 100);
        }
     
        int[] answer = new int[enroll.length];
        for(int i = 0; i<enroll.length; i++){
            answer[i] = money.getOrDefault(enroll[i], 0);
        }
        return answer;
    }
    
    void calculate(String curr, int sales){
        int nextSales = sales / 10;
        money.put(curr, money.getOrDefault(curr, 0) + sales - nextSales);
        
        if(nextSales > 0 && parent.containsKey(curr)){
            calculate(parent.get(curr), nextSales);
        }
    }
}


🫥 처음에는 트리로 풀어야하나 했는데 이진트리는 아니여서 계속 고민하다가 참고한 풀이 (재귀는 생각못했네..)
profile
💻💡👻

0개의 댓글