Algorithm/프로그래머스

[프로그래머스] 다단계 칫솔 판매(자바) / 자료구조 & 구현

미스터로즈 2021. 10. 17. 10:26

문제

 

제한사항

 

입출력

 

문제풀이

import java.util.*;
class Solution {
    class report{
        int money;
        String ref;
        public report(int money,String ref){
            this.money = money;
            this.ref = ref;
        }
    }
    public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
        int[] answer = new int[enroll.length];
        HashMap<String,report> hm = new HashMap<>();
        for(int i = 0 ; i < enroll.length;i++){
            hm.put(enroll[i],new report(0,referral[i]));
        }
        for(int i = 0 ; i < seller.length;i++){
            String sell = seller[i];
            int cash = amount[i]*100;
            while(true){
                if(hm.get(sell).ref.equals("-")){
                    hm.get(sell).money += cash-cash/10;
                    break;
                }else{
                    hm.get(sell).money += cash - (cash/10);
                    cash = cash/10;
                    sell = hm.get(sell).ref;
                }
                if(cash<1){
                    break;
                }
            }
        }
        for(int i =0; i < enroll.length;i++){
            answer[i]=hm.get(enroll[i]).money;
        }
        return answer;
    }
}

 

※ 내 생각

이 문제는 자료구조 활용 및 구현 으로 해결을 했습니다.
현재 위치에서 나보다 위에 있는 셀러 및 나의 돈에 대한 클래스를 만들었습니다.
HashMap을 이용하여 본인의 이름을 키로 클래스를 값으로 하는 자료구조를 만들었습니다.

이익금을 계산하고 10프로씩 위로 올려 보내는 식으로 코드를 짯습니다.