def solution(id_list, report, k):
answer = []
suspended_users = []
user_reports = {}
user_counts = {}
for user_id in id_list:
user_reports[user_id] = []
user_counts[user_id] = 0
for report_info in report:
reporter, reported = report_info.split(' ')
if reported not in user_reports[reporter]:
user_reports[reporter].append(reported)
user_counts[reported] += 1
for user_id, count in user_counts.items():
if count >= k:
suspended_users.append(user_id)
for user_id in id_list:
count = 0
for suspended_user in suspended_users:
if suspended_user in user_reports[user_id]:
count += 1
answer.append(count)
return answer
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
k = 2
>> [2,1,1,0]
각 사용자의 신고 정보를 저장하기 위해 user_reports 딕셔너리를 초기화한다.
각 사용자가 신고당한 횟수를 저장하기 위해 user_counts 딕셔너리를 초기화한다.
report 리스트를 순회하면서 신고 정보를 처리한다. 신고당한 사용자를 신고한 사용자의 신고 리스트에 추가하고, 신고당한 사용자의 신고 횟수를 1 증가시킨다.
user_counts 딕셔너리를 순회하면서 k 이상으로 신고당한 사용자를 suspended_users 리스트에 추가한다.
id_list를 순회하면서 각 사용자가 suspended_users에 포함된 사용자를 신고한 횟수를 세고, answer 리스트에 추가한다.
answer 리스트를 반환한다.