[프로그래머스] 신고 결과 받기
풀이
#include <string>
#include <vector>
#include <map>
#include <set>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
int N = id_list.size();
map<string, int> idCountMap = map<string, int>();
map<string, set<string>> idReportMap = map<string, set<string>>();
for(int i = 0; i<N; ++i){
string id = id_list[i];
idCountMap[id] = 0;
idReportMap[id] = set<string>();
}
for(int i = 0; i<report.size(); ++i){
string id1 = "";
string id2 = "";
for(int j = 0; j<report[i].length(); ++j){
if(report[i][j] == ' '){
id1 = report[i].substr(0,j);
id2 = report[i].substr(j+1);
break;
}
}
if(idReportMap[id1].find(id2) == idReportMap[id1].end()){
idReportMap[id1].insert(id2);
idCountMap[id2] += 1;
}
}
vector<int> answer = vector<int>(N);
for(int i = 0; i<N; ++i){
string id2 = id_list[i];
if(idCountMap[id2] >= k){
for(int j = 0; j<N; ++j){
if(i==j) continue;
string id1 = id_list[j];
if(idReportMap[id1].find(id2) != idReportMap[id1].end()) answer[j] += 1;
}
}
}
return answer;
}