Programming Practice/PROGRAMMERS
[PG] 신고 결과 받기 - Lv.1
Cage
2022. 6. 14. 21:24
문제
* 해당 문제의 모든 저작권은 프로그래머스 측에 있으며 본 블로그는 학업 흔적을 남겨 학업 상향을 위한 블로그로 이익을 추구하지 않으며 프로그래머스 측의 약관을 위배하지 않음을 명시합니다.*
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
풀이
STL을 사용하지 않고 풀면 꽤나 코드가 길어지고 복잡해질 문제라고 생각한다
신고 처리를 map 컨테니어와 중복을 set 컨테이너를 사용해서 쉽게 풀었기 때문이다.
프로그래머스 문제는 정말 재미있는 편인 것 같다.
소스 코드
#include <string>
#include <vector>
#include <map>
#include <set>
#include <sstream>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer;
map<string, int> cnt;
map<string, set<string>> log;
for(string s : report) {
string from, to;
stringstream str(s);
str >> from >> to;
if (log[from].find(to) == log[from].end()) {
log[from].insert(to);
cnt[to]++;
}
}
for(string id : id_list) {
int r_cnt = 0;
for (string check : log[id])
if(cnt[check] >= k)
r_cnt++;
answer.push_back(r_cnt);
}
return answer;
}