문제링크 : programmers.co.kr/learn/courses/30/lessons/77486
코딩테스트 연습 - 다단계 칫솔 판매
민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후,
programmers.co.kr
(전처리)
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] (1) | 2021.05.09 |
[프로그래머스] 2021 dev-matching - 행렬 테두리 회전하기 [JAVA] (0) | 2021.05.01 |
[프로그래머스] 2021 dev-matching 로또의 최고 순위와 최저 순위 [JAVA] (0) | 2021.05.01 |
[프로그래머스] kakao 2021년 블라인드 (광고삽입) [JAVA] (1) | 2021.04.18 |