https://programmers.co.kr/learn/courses/30/lessons/92334
인덱스로 int가 아닌 다른 자료형을 사용할 수 있는 map,
map과 유사하지만 key만 있고 value는 없는 set을 활용했다.
신고된 ID와 신고횟수를 저장하는 map
신고한 ID와 신고된 ID를 저장하는 map을 선언한다.
report를 신고한 ID(from)와 신고된 ID(to)로 파싱한 뒤
중복 신고가 아닐 경우 각 map에 정보를 저장한다.
그 후 자신(s)이 신고한 사람(str)이 k번 이상 신고당한 사람이라면(report_cnt[str]>=k) cnt++
#include <string>
#include <vector>
#include <map>
#include <set>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer;
map<string, int> report_cnt;//신고된 ID, 신고횟수
map<string, set<string>> report_list;//신고한 ID, 신고된 ID
for (string s : report) //parsing
{
int blank = s.find(' ');
string from = s.substr(0, blank);
string to = s.substr(blank);
if (report_list[from].find(to) == report_list[from].end()) {
//중복신고가 아닐 경우
report_cnt[to]++;
report_list[from].insert(to);
}
}
for (string s : id_list)
{
int cnt = 0;
// 자신이 신고한 사람이 k번 이상 신고 당한 사람이라면
// 결과메일++
for (string str : report_list[s])
{
if (report_cnt[str] >= k)
cnt++;
}
answer.push_back(cnt);
}
return answer;
}
출처 : https://yjyoon-dev.github.io/kakao/2022/01/15/kakao-2022-blind-01/
'문제를 풀자' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기(파이썬/Python) (0) | 2022.08.11 |
---|---|
[프로그래머스] 124 나라의 숫자(파이썬/Python) (0) | 2022.08.11 |
[SWEA #8016] 홀수 피라미드(C++) (0) | 2022.05.31 |
[백준 #16563] 어려운 소인수분해(C++) (0) | 2022.05.31 |
[백준 #1929] 소수 구하기(에라토스테네스의 체)(C++) (0) | 2022.05.31 |
댓글