원하는 것은 뭐든지
99클럽 코테 스터디 9일차 - 프로그래머, 다단계 칫솔 판매 본문
반응형
문제 풀이 예상 시간보다 지나가면 다른 해석을 보고 있습니다.
문제
풀이
문제 해석
1. 위와 같이 young에게 1200원의 수익이 발생하면 수익의 10%는 추천인에게 올린다 young -120->edward
2. edward는 자신의 추천인에게 또 10%를 넘긴다. edward -12-> mary
3. mary는 또다시 자신의 추천인에게 10%를 넘겨야 하는데 추천인이 따로 없고 회사다. mary -1->center
4. 이처럼 자신이 얻는 수익의 10%만 위로 올리고 나머지는 내가 먹는다.
5. 1의 자리까지만 넘기고 나머지는 버림 한다.
6. 입력으로 등록인원배열, 인원의 같은 크기의 배열로 추천인배열, 수익자 배열, 수익자 배열과 같은 크기의 배열로 양 배열
7. 각 인원이 얻는 수익을 출력해라
문제 풀이
1. dfs로도 풀이할 수 있겠으나 사실 한 방향으로 직진만 하기 때문에 단순 구현으로 풀이했음
2. 코드 참고
소스코드
import java.util.*;
class Solution {
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
int len = enroll.length;
//각 인원의 수익 Map
Map<String,Integer> money = new HashMap<>();
//관계 Map
Map<String, String> relation = new HashMap<>();
//관계 삽입
for(int i=0;i<len;i++){
relation.put(enroll[i], referral[i]);
}
//각 판매 수익별 반복문
for(int i=0;i<seller.length;i++){
//판매자와 총 수익
String me = seller[i];
int totalMoney = amount[i] * 100;
while(true){
String master = relation.get(me);
int mine = totalMoney - (totalMoney/10);
//10% 떼고 내가 다먹음
money.put(me, money.getOrDefault(me,0) + mine);
//남은 돈 10%
totalMoney = totalMoney/10;
//만약 위에가 더 이상 없거나 남은 돈도 0이면 나가!!!
if(master.equals("-") || totalMoney==0) break;
me = master;
}
}
int[] answer = new int[len];
for(int i=0;i<len;i++){
answer[i] = money.getOrDefault(enroll[i], 0);
}
return answer;
}
}
TIL
- 반복문을 빠져나오는 조건을 다시 한번 확인하자.
- 단순구현에서 흐름을 잘 파악해야 한다.
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 11일차 - 백준, 도서관 (0) | 2024.11.07 |
---|---|
99클럽 코테 스터디 10일차 - 백, 좋다 (0) | 2024.11.06 |
99클럽 코테 스터디 8일차 - 백준, 녹색 옷 입은 애가 젤다지? (0) | 2024.11.04 |
99클럽 코테 스터디 7일차 - 백준, 노드사이의 거리 (0) | 2024.11.03 |
99클럽 코테 스터디 6일차 - 백준, 키 순서 (0) | 2024.11.02 |
Comments