문제
제한사항
입출력
문제풀이
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프로씩 위로 올려 보내는 식으로 코드를 짯습니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 압축(자바) / 문자열 (0) | 2021.10.25 |
---|---|
[프로그래머스] 타겟 넘버(자바) / DFS (0) | 2021.10.22 |
[프로그래머스] 행렬 테두리 회전하기 ( 자바) / 구현 (0) | 2021.10.16 |
[프로그래머스] 로또의 최고 순위와 최저 순위(자바) / 구현 (0) | 2021.10.15 |
[프로그래머스] 카펫 (자바) / 완전 탐색 (0) | 2021.10.04 |