Tiny Bunny
본문 바로가기

programmers

프로그래머스 3단계 : 다단계 칫솔 (Java 자바)

728x90

 

import java.util.*;

class Solution {
	// 사람을 인덱스로 매핑
    public Map<String,Integer> people = new HashMap<>();
    public int[] answer; // 각 인덱스의 최종 결과
    public String[] parent;// 인덱스를 추천한 사람을 의미하는 변수
    
    
    public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
        parent = new String[enroll.length];
        answer = new int[enroll.length];
        
        for(int i = 0; i < enroll.length; i++) {
            people.put(enroll[i],i); // 매핑 작업
            if(referral[i].equals("-")) continue;
            parent[i] = referral[i]; // i의 추천자를 referral[i]로 지정
        }
        
        // 계산
        for(int i = 0; i < seller.length; i++){
            sends(seller[i],amount[i] * 100);
        }
        return answer;
    }
    
    // 금액을 계산하고 돈을 위로 넘기는 함수
    // seller : 돈을 받는 사람, price : 받을 돈 
    public void sends(String seller, int price){
    	// 10을 나눈 가격이 0이 되거나, seller가 없다면 종료
        if(price <= 0 || seller == null) return;
        
        int sending = price / 10; // 10% 뗀 돈
        price -= sending; // 자신이 받을 돈
        answer[people.get(seller)] += price; // 자신에게 돈을 더함
        
        // 자신을 추천한 사람을 주체로하는 sends 호출
        sends(parent[people.get(seller)],sending);
    }
}
728x90