[Programmers] 2021 Dev-Matching 웹 백엔드 개발자(상반기) 다단계 칫솔 판매 - JAVA

최영환·2022년 9월 30일
0
post-thumbnail
## Java 풀이 시 유의사항 ##
클래스명은 Main 으로 작성해야함!

💡 문제









💬 입출력 예시

📌 풀이(소스코드)

import java.util.*;

class Solution {
    public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
        HashMap<String, Person> people = new HashMap<>();
        int[] answer = new int[enroll.length];
        
        people.put("-", new Person("-"));
        for(int i = 0; i < enroll.length; i++)
            people.put(enroll[i], new Person(enroll[i]));
        
        for(int i = 0; i < referral.length; i++)
            people.get(enroll[i]).parent = people.get(referral[i]);
        
        for(int i = 0; i < seller.length; i++)
            addProfit(people.get(seller[i]), amount[i] * 100);
        
        for(int i = 0; i < enroll.length; i++)
            answer[i] = people.get(enroll[i]).profit;
        
        return answer;
    }
    
    public void addProfit(Person person, int profit){
        int profit_for_parent = profit / 10;
        if(profit_for_parent != 0 && person.parent != null){
            person.profit += profit - profit_for_parent;
            addProfit(person.parent, profit_for_parent);
        }else{
            person.profit += profit;
        }
    }
    
    class Person{
        String name;
        Person parent;
        int profit;
        public Person(String name){
            this.name = name;
            this.parent = null;
            this.profit = 0;
        }  
    }
}

📄 해설

  • 작성 예정
profile
조금 느릴게요~

0개의 댓글