문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
map과 set을 도배해서 조금 지저분하지만 문제 자체는 쉽게 풀 수 있는 문제였습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |

개발환경: Programmers IDE
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 단체사진 찍기 (0) | 2022.01.26 |
---|---|
[Programmers] k진수에서 소수 개수 구하기 (0) | 2022.01.19 |
[Programmers] 소수 찾기 (0) | 2021.12.21 |
[Programmers] 서울에서 김서방 찾기 (0) | 2021.12.18 |
[Programmers] 문자열 압축 (0) | 2021.12.10 |