https://programmers.co.kr/learn/courses/30/lessons/92334
1-1. 각 유저별로 신고 당한 횟수를 딕셔너리에 저장 (r_dic)
1-2. 각 유저별 신고한 대상을 딕셔너리에 저장 (u_dic)
2-1. 전체 유저 리스트를 순회하면서,
2-2. 해당 유저가 신고한 회원들이 k번 이상으로 신고(정지) 되었는지 확인.
-> 정지 되었다면 cnt를 1 늘려주고
한 유저에 대해 체크가 끝났다면 cnt 횟수를 answer 리스트에 추가해준다.
from collections import defaultdict
def solution(id_list, report, k):
report = list(set(report))
r_dic,u_dic = defaultdict(list), defaultdict(list)
answer = []
# 1.1 각 유저별로 신고 당한 횟수를 기록
for rep in report:
x,y = rep.split(" ")
if y not in r_dic:
r_dic[y] = 1
else:
r_dic[y] += 1
u_dic[x] += [y] # 1.2 유저별 신고한 대상을 저장
# 2.1 전체 유저 리스트 순회
for u_id in id_list:
cnt = 0
# 2.2 해당 유저가 신고한 녀석들을 확인
for v in u_dic[u_id]:
# 2.3 정지되었다면 + 1
if r_dic[v] >= k:
cnt += 1
# 최종적으로 날릴 메일의 갯수
answer.append(cnt)
return answer