-
[프로그래머스]다단계 칫솔 판매 -JAVA문제풀이/프로그래머스 2021. 5. 4. 15:00
[프로그래머스]다단계 칫솔 판매
programmers.co.kr/learn/courses/30/lessons/77486
코딩테스트 연습 - 다단계 칫솔 판매
민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후,
programmers.co.kr
풀이
이 문제는 올해 프로그래머스 Dev-Matching 문제라고 한다. 문제에서 주어진 조건대로 따라가며 풀었고 별다른 자료구조를 사용하지 않고 그리디하게 풀었다.
조건에 맞게 반복문을 돌리면서 현재 판매원이 가져갈 금액을 더해주고, 금액을 현재 금액의 10퍼센트로 바꾸어 주면서 연산을 했다.
테스트 코드는 모두 통과되지만, 걸리는 시간을 보니 그리 효율적인 코드는 아닌 것 같다. 더 효율적인 다른 방법이 없는지 고민해 보아야 겠다.
코드
1234567891011121314151617181920212223242526272829303132import java.util.*;class Solution {public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {int[] result = new int[enroll.length];for(int i = 0; i < seller.length; i++) {int cost = amount[i] * 100;String currentSeller = seller[i];while(!currentSeller.equals("-")) {int idx = 0; //enroll index를 찾음for(int j = 0; j < enroll.length; j++) {if(currentSeller.equals(enroll[j])) {idx = j;break;}}String parent = referral[idx]; // 상위 판매원double tenPercent = cost * 0.1; // 현재 급액의 10프로int sellerCost = cost - (int) tenPercent; //현재 판매원이 가져가는 금액result[idx] += sellerCost;currentSeller = parent;cost = (int) tenPercent;}}return result;}}cs '문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]로또의 최고 순위와 최저 순위 - JAVA (0) 2021.07.04 [프로그래머스]모두 0으로 만들기 - JAVA (0) 2021.06.08 [프로그래머스]풍선 터트리기 - JAVA (0) 2021.03.31 [프로그래머스]길 찾기 게임 - JAVA (0) 2021.03.14 [프로그래머스]가장 긴 팰린드롬 - JAVA (0) 2021.03.12