문제 URL : https://programmers.co.kr/learn/courses/30/lessons/77486
문제 접근법 :
그림화살표 엉성해서 죄송합니다.
루트로 올라가는 단방향 트리라고 생각하시면 쉽습니다. 해당지점에서 올라가서 루트까지 올라가면서 그가격의 10프로씩 줄여나가는 겁니다 가격이 0이면 더이상 올라갈 필요없고 루트라면 빠져나오면 되기때문에 어렵지 않은문제입니다.
소스코드 :
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
|
//By 콩순이냉장고
#include<bits/stdc++.h>
using namespace std;
unordered_map<string, string> tree;
unordered_map<string, int> member;
void dfs(string& name,int price) {
int nextprice = price / 10;
member[name] += price - nextprice;
if (name == "-"||nextprice==0) {
return;
}
dfs(tree[name], nextprice);
}
vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
vector<int> answer;
for (int i = 0; i < enroll.size(); i++) {
tree[enroll[i]] = referral[i];
}
for (int i = 0; i < seller.size(); i++) {
dfs(seller[i], amount[i] * 100);
}
for (int i = 0; i < enroll.size(); i++)
answer.push_back(member[enroll[i]]);
return answer;
}
|
cs |
궁금한점 혹은 모르는점 혹은 논리적인 오류등 어떤 질문이든 댓글은 언제나 환영입니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 N으로 표현 (0) | 2021.07.22 |
---|---|
프로그래머스 헤비 유저가 소유한 장소 (0) | 2021.07.07 |
프로그래머스 행렬 테두리 회전하기 (0) | 2021.07.07 |
프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2021.07.07 |
프로그래머스 쿼드압축 후 개수 세기 (0) | 2021.06.24 |