문제 : https://school.programmers.co.kr/learn/courses/30/lessons/77486?language=java
접근 :
- 1. 판매한 사원으로 부터 10%의 금액을 제외한 금액을 자신의 Score 에 저장한다. (HashMap)
- 2. 10% 금액은 자신의 추천한 사람에게 전달하고 추천한 사람을 기준으로 1 과정을 진행한다.
- Center 에게 이익금이 갈때까지, 1~2 과정을 반복한다.
- 모든 판매한 사원에 대해서 위의 과정을 반복한 후 결과를 출력한다.
코드 구현 :
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
Map<String, Integer> score = new HashMap<>();
for(String n : enroll){ score.put(n, 0); }
score.put("-", 0);
Map<String, String> graph = new HashMap<>();
for(int i = 0 ; i < referral.length ; i++){
graph.put(enroll[i], referral[i]);
}
String target;
for(int i = 0 ; i < seller.length ; i++){
target = seller[i];
int value = amount[i] * 100;
int fee = (int) (value * 0.1);
score.put(target, score.get(target) + value - fee);
while(graph.containsKey(target)){
target = graph.get(target);
value = fee;
fee = (int) (value * 0.1);
score.put(target, score.get(target) + value - fee);
if(fee == 0) break;
}
}
int[] answer = new int[enroll.length];
for(int i = 0 ; i < enroll.length ; i++){
answer[i] = score.get(enroll[i]);
}
return answer;
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 프로그래머스 풍선터트리기_구현 (0) | 2024.11.04 |
---|---|
[JAVA] 백준 가장 긴 증가하는 부분 수열 2_이분탐색 (0) | 2024.10.30 |
[JAVA] 프로그래머스 가장긴 팰린드롬_브루트포스 (0) | 2024.10.29 |
[JAVA] 프로그래머스 디스크 컨트롤러_우선순위큐 (0) | 2024.10.28 |
[JAVA] 프로그래머스 가장 먼 노드_그래프 (0) | 2024.10.16 |