https://programmers.co.kr/learn/courses/30/lessons/92334
from collections import defaultdict,Counter
def solution(id_list, report, k):
report= list(set(report)) # 중복제거
# answer = 메일받을 리스트, 0으로 초기화
answer = dict()
for i in id_list:
answer[i] = 0
dic = defaultdict(list)
ban = []
# 신고 결과를 정리
# dic = {신고한사람 : 신고받은사람}
# ban = 신고받은사람 담기
for i in report:
nick = i.split()
dic[nick[0]].append(nick[1])
ban.append(nick[1])
# 신고받은사람 리스트에서 K번 신고받은 사람만 남김 (계정 정지)
ban=list(map(lambda x:x[0],list(filter(lambda x:x[1]>=k,Counter(ban).items()))))
# 신고결과 정리한 딕셔너리를 돌면서
# value값과 ban리스트의 교집합체크.
# 교집합의 개수가 메일받을 개수다.
for key, value in dic.items():
answer[key] += len(set(value)&set(ban))
# answer의 value값만 출력
return list(answer.values())