알고리즘/programmers

[Programmers] 신고 결과 받기

꾸준함. 2022. 1. 16. 21:42

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92334

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

map과 set을 도배해서 조금 지저분하지만 문제 자체는 쉽게 풀 수 있는 문제였습니다.

 

#include <string>
#include <vector>
#include <map>
#include <set>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
map<string, set<string>> reportMap;
map<string, int> reportCnt;
for (string s : report)
{
string temp;
string reporter;
for (char c : s)
{
if (c == ' ')
{
reporter = temp;
temp = "";
continue;
}
temp += c;
}
if (reportMap[reporter].count(temp))
{
continue;
}
reportMap[reporter].insert(temp);
reportCnt[temp]++;
}
vector<int> answer(id_list.size());
set<string> visited;
for (string id : id_list)
{
if (reportCnt[id] < k)
{
continue;
}
visited.insert(id);
}
for (int i = 0; i < id_list.size(); i++)
{
int cnt = 0;
for (auto r : reportMap[id_list[i]])
{
if (visited.find(r) != visited.end())
{
cnt++;
}
}
answer[i] = cnt;
}
return answer;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경: Programmers IDE

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형