728x90
https://school.programmers.co.kr/learn/courses/30/lessons/92334
문제 설명
report를 통해서 누가 누구를 신고했는지 확인한다.
특정 유저의 신고가 k이상이 된다면? 신고한 유저에게 해당 계정이 정지되었다는 알림을 보낸다.
각 유저들에게 몇 개의 알림이 도착하는지 배열에 담아서 나타내는 것이 문제다.
문제 풀이
- 각 유저가 몇 번의 신고를 했는지 그리고 각 유저가 누구에게 신고 당했는지 정보를 dictionary에 담는다.
- report를 Split하여 신고자와 피신고자를 업데이트한다.
- 결과적으로 k번 이상 신고된 유저가 있다면? 해당 유저를 누가 신고했는지 찾아낸 뒤 알림 횟수를 +1 해준다.
using System;
using System.Collections.Generic;
public class Solution {
public int[] solution(string[] id_list, string[] report, int k) {
int[] answer = new int[id_list.Length];
Dictionary<string, HashSet<string>> dic = new Dictionary<string, HashSet<string>>();
Dictionary<string, int> dicUserId = new Dictionary<string, int>();
foreach(string id in id_list) {
dic[id] = new HashSet<string>();
dicUserId[id] = 0;
}
for(int i = 0; i < report.Length; i++) {
string[] r = report[i].Split(" "); // muzi frodo
dic[r[1]].Add(r[0]);
}
List<int> list = new List<int>();
for(int i = 0; i < id_list.Length; i++) {
// 만약 k번 이상 신고를 당했다면?
// 누가 신고했는지 찾은 뒤 value++
if(dic[id_list[i]].Count >= k) {
foreach(string s in dic[id_list[i]]) {
dicUserId[s] += 1;
}
}
}
for(int i = 0; i < id_list.Length; i++) {
answer[i] = dicUserId[id_list[i]];
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 개인정보 수집 유효기간(C#) (0) | 2023.12.27 |
---|---|
[프로그래머스] 달리기 경주(C#) (0) | 2023.12.11 |
[프로그래머스] 해시 - 전화번호 목록(feat. python) (0) | 2023.09.14 |
[프로그래머스] 해시 - 포켓몬(feat. python) (0) | 2023.09.07 |
[Python] 프로그래머스 - 해시 - 완주하지 못한 선수 (0) | 2023.08.30 |