MS's log
  • HOME
  • TAG
  • GUESTBOOK
  • ADMIN
Close

Who am I?

  • github.com/mskim9967

Category

  • 분류 전체보기 (121)
    • 대회, 프로젝트 (21)
      • 2021 국방 공공데이터 경진대회 (1)
      • 2021 군장병 해커톤 (16)
      • 2021 UNI-DTHON (1)
    • Study (58)
      • Backend (29)
      • Infra, DevOps (9)
      • Frontend (14)
      • Data Structure (6)
    • Coding Test (40)
      • Codeforces (1)
      • 백준 (10)
      • codeground (19)
      • 프로그래머스 (9)

Recent Post

Popular Post

Comment

Tags

  • rn
  • 군대공부
  • DevOps
  • React Native

Visitor Counter

어제

오늘

전체

다단계 칫솔 판매 / 2021 Dev-Matching: 웹 백엔드 개발자
By _MS
Coding Test/프로그래머스
2021. 10. 31. 21:12

문제

문제 읽기

 

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

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

programmers.co.kr

해결

  • 다단계 구조를 재귀로 탐색하게 함
  • map을 사용하여 탐색시간 줄임(안그러면 시간초과남)

소스코드

/*
    Prob
    https://programmers.co.kr/learn/courses/30/lessons/77486

    Writer
    MyungSeung Kim(mskim9967@gmail.com)
*/

#include <bits/stdc++.h>
using namespace std;

void calc(map<string, string> &referrals, map<string, int> &revenue, int cost, string person) {
    int fee = cost * 0.1;
    revenue[person] += cost - fee;
    if(referrals[person] == "-" || fee == 0) return; // 수수료가 1원 미만이거나 추천인이 없으면 재귀 종료
    calc(referrals, revenue, fee, referrals[person]);
}

vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
    map<string, int> revenue;
    map<string, string> referrals;
    for(int i = 0; i < enroll.size(); i++) {
        referrals.insert({enroll[i], referral[i]});
        revenue.insert({enroll[i], 0});
    }

    for(int i = 0; i < seller.size(); i++) 
        calc(referrals, revenue, amount[i] * 100, seller[i]);

    vector<int> answer;
    for(string person : enroll) answer.push_back(revenue[person]);
    return answer;
}
저작자표시 동일조건 (새창열림)

'Coding Test > 프로그래머스' 카테고리의 다른 글

행렬 테두리 회전하기 / 2021 Dev-Matching: 웹 백엔드 개발자  (0) 2021.10.29
로또의 최고 순위와 최저 순위 / 2021 Dev-Matching: 웹 백엔드 개발자  (0) 2021.10.29
피로도 / 12주차 위클리 챌린지  (0) 2021.10.29
프렌즈4블럭 / 2018 KAKAO BLIND RECRUITMENT 1차  (0) 2021.08.29
셔틀버스 / 2018 KAKAO BLIND RECRUITMENT 1차  (0) 2021.08.29
MS's log :: _MS
Contact
Github

Copyright MS's log

Designed by MemoStack

Unicons by Iconscout

티스토리툴바