문제링크 : programmers.co.kr/learn/courses/30/lessons/77486
(전처리)
enroll 순서대로 해당 이름을 1~N까지 고유 번호를 HashMap에 저장했다.
또, referral 배열 정보로 해당 유저의 부모의 번호를 par 배열에 저장했다.
seller 정보와 amount를 가지고 최초 이득 유저와 돈을 가지고서 다단계 과정을 수행했다.
while문이 그것이며, 해당 코인을 본인에게 더하고 부모에게 넘겨주는 식이다.
부모 정보는 par에 있으므로 par가 없을 때까지 반복한다.
import java.util.*;
class Solution {
public static int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
int[] answer = new int[enroll.length];
int [] par = new int[enroll.length+1];
HashMap key = new HashMap<String,Integer>();
int idx = 1;
for(int i=0;i<enroll.length;i++){
key.put(enroll[i], idx++);
}
for(int i=1;i<=referral.length;i++){
String parName = referral[i-1];
if(parName.equals("-")){
par[i] = 0;
}else{
par[i] = (int)key.get(parName);
}
}
for(int i=0;i<seller.length;i++){
String name = seller[i];
int num = (int)key.get(name);
int coin = amount[i]* 100;
while(true){
if(num==0){
break;
}
answer[num-1] += coin - (int)(coin*0.1);
coin *= 0.1;
num = par[num];
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] kakao 2019 겨울 인턴십 / 호텔 방 배정 [JAVA] (0) | 2021.05.09 |
---|---|
[프로그래머스] kakao 2019 겨울 인턴십 크레인 인형뽑기 게임 [JAVA] (0) | 2021.05.09 |
[프로그래머스] 2021 dev-matching - 행렬 테두리 회전하기 [JAVA] (0) | 2021.05.01 |
[프로그래머스] 2021 dev-matching 로또의 최고 순위와 최저 순위 [JAVA] (0) | 2021.05.01 |
[프로그래머스] kakao 2021년 블라인드 (광고삽입) [JAVA] (0) | 2021.04.18 |