728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/92334
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👩💻 코드
#include <string>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <sstream>
#include <algorithm>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer(id_list.size(), 0);
unordered_map<string, unordered_set<string>> reporter_map;
unordered_map<string, int> reported_map;
sort(report.begin(), report.end());
report.erase(unique(report.begin(), report.end()), report.end());
for(const string& r : report){
stringstream ss(r);
string reporter_name, reported_name;
ss >> reporter_name >> reported_name;
reporter_map[reporter_name].insert(reported_name);
reported_map[reported_name] += 1;
}
for(const auto& reported : reported_map){
if(reported.second >= k){
for(const auto& reporter : reporter_map){
if(reporter.second.find(reported.first) != reporter.second.end()){
auto it = find(id_list.begin(), id_list.end(), reporter.first);
if(it != id_list.end()){
int idx = distance(id_list.begin(), it);
answer[idx] += 1;
}
}
}
}
}
return answer;
}
📝 풀이
reporter_map -> 유저가 신고한 목록
reported_map -> 유저가 신고된 횟수
sort와 erase를 통해 중복(한 유저가 여러번) 신고 제거
첫 번째 for문에서 report의 정보를 reporter_map과 reported_map에 입력
그 다음 for문에서 k번 이상 신고된 유저의 경우 신고한 유저의 index를 찾아 증가시킴
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 많이 받은 선물 (0) | 2024.07.09 |
---|---|
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.07.09 |
[프로그래머스] 공원 산책 (0) | 2024.07.02 |
[프로그래머스] 달리기 경주 (0) | 2024.06.21 |
[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2024.06.21 |