😄 3단계는 역시 어렵고 재밌다
string
이며 자신의 부모를 저장하기 위해서 map
을 써야겠다고 생각했다.map<string,int>
: 자신이 가지고 있는 돈map<string,string>
: 자신의 부모 m["-"] = 0;
for(int i=0;i<enroll.size();i++)
{
m[enroll[i]]=0;
parent[enroll[i]] = referral[i];
}
center
는 출력할 필요가 없다는걸 모르고, 계속 출력했었다.parent
도 초기화시켜줬다.(enroll, referral
벡터를 사용해서) for(int i=0;i<seller.size();i++)
{
string me = seller[i];
int coin = amount[i]*100;
while(me !="-" && coin/10 >= 1 )
{
m[me] += (coin - coin/10);
coin = coin/10;
me = parent[me];
}
m[me] += (coin);
}
while
문을 빠져나온다.coin/10 >= 1
에 대한 조건을 달아주지 않았다.#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>
using namespace std;
unordered_map<string,int>m;
unordered_map<string,string>parent;
vector<int> solution(vector<string> enroll, vector<string> referral, vector<string> seller, vector<int> amount) {
vector<int> answer;
m["-"] = 0;
for(int i=0;i<enroll.size();i++)
{
m[enroll[i]]=0;
parent[enroll[i]] = referral[i];
}
for(int i=0;i<seller.size();i++)
{
string me = seller[i];
int coin = amount[i]*100;
while(me !="-" && coin/10 >= 1 )
{
m[me] += (coin - coin/10);
coin = coin/10;
me = parent[me];
}
m[me] += (coin);
}
for(int i=0;i<enroll.size();i++)
{
answer.push_back(m[enroll[i]]);
}
return answer;
}