티스토리 뷰

문제 출처:https://programmers.co.kr/learn/courses/30/lessons/77486

 

코딩테스트 연습 - 다단계 칫솔 판매

민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후,

programmers.co.kr

 

지문처럼 단방향 그래프로 설정하여 풀면 간단히 해결할 수 있는 문제다.

초기 설정은 enroll의 부모는 referral로 하여 ArrayList배열을 설정해주면 된다. 보기에는 문자열로 되어있으므로 필자는 enroll에 이름들을 순서대로 hashmap으로 해서 0부터 순차적으로 값을 주었다.

즉, John은 1, mary는 2... 이런식으로 말이다.

 

//hashmap으로 각각 enroll의 사용자에게 0부터 인덱스값 부여
        HashMap<String,Integer> hm = new HashMap<>();
        for(int i=0;i<enroll.length;i++){
            hm.put(enroll[i],i);           
        }

 

 

다음으로  HashMap의 key를 참고하여 리스트 배열에 연결시켜주었다.

for(int i=0;i<enroll.length;i++){
            String key = enroll[i];
            String refer = referral[i];
            if(refer.equals("-"))
                continue;
            int from = hm.get(key);
            int to = hm.get(refer);
            list[from].add(to);
        }

 

 

이제 마무리로 seller에서 하나씩 읽어들이면서 각자의 부모 노드를 찾아가면서 값을 경신해 나가면 된다.

 

'알고리즘' 카테고리의 다른 글

백준 - 구간 합 구하기4  (0) 2021.07.24
백준 - 1로 만들기  (0) 2021.07.14
프로그래머스 - 순위  (0) 2021.07.09
프로그래머스 - 정수 삼각형  (0) 2021.06.27
백준 - 계단 오르기  (0) 2021.06.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함