- split을 통해 문자열에서 유저 ID와 신고 ID를 구분하여야 한다.
ex) a, b = "muzi frodo".split() -> a = "muzi", b = "frodo"- 주어진 report를 list(set(report)) 작업을 통해서 중복 제거를 한다.
- 유저가 신고한 아이디를 defaultdict(set) 형태에 추가해준다.(중복된 값은 set에 의해 날라간다.)
ex) user["muzi"].add("frodo")- 신고 ID에 따른 신고 횟수를 defaultdict(int)에 1씩 추가해 준다.
ex) cnt["frodo"] += 1- 주어진 id_list(유저)가 신고한 ID의 신고 당한 횟수를 k와 비교하여 answer에 추가해준다.
from collections import defaultdict def solution(id_list, report, k): answer = [] report = list(set(report)) # 문제 풀이 2번 user = defaultdict(set) # user[userID] = 신고 ID cnt = defaultdict(int) # cnt[신고 ID] = 신고 당한 횟수 문제 풀이 3, 4번 for r in report: a,b = r.split() # 문제 풀이 1번 user[a].add(b) cnt[b] += 1 # 문제 풀이 5번 for id in id_list: result = 0 for x in user[id]: if cnt[x] >= k: result+=1 answer.append(result) return answer