문제 링크

풀이 과정

전체 코드

from collections import defaultdict

def solution(id_list, report, k):
    '''
    1. 각 유저 별 신고 당한 횟수를 저장
    2. 각 유저 별 신고를 한 id를 저장 
			 - 동일한 유저에 대한 신고 횟수는 1회로 처리
			 -> Set 자료구조 활용!
    3. 정지 기준 횟수와 비교 후 정답 산출
    '''
    answer = [0 for _ in range(len(id_list))]
    # 각 유저 별 신고 당한 횟수
    reported_dict = {id: 0 for id in id_list} 
    # 각 유저 별 신고를 한 id 목록 
    report_dict = {id: set([]) for id in id_list}
    
    for report_info in report:
        users_info = report_info.split(' ')
        reporter = users_info[0]
        reported_user = users_info[-1]
        # A 유저가 B 유저를 최초로 신고한 경우에만 신고 횟수를 갱신
        if reported_user not in report_dict[reporter]:
            report_dict[reporter].add(reported_user)
            reported_dict[reported_user] += 1
    
    for user_idx, user in enumerate(id_list):
        for reported_user in report_dict[user]:
            if reported_dict[reported_user] >= k:
                answer[user_idx] += 1
                
    return answer