본문 바로가기

PS

프로그래머스 92334 Python [신고 결과 받기]

def solution(id_list, report, k):
    answer = [0] * len(id_list)  # 각 유저별로 처리 결과 메일을 받은 횟수를 담는 배열
    report = set(report)  # 핵심: 유저가 중복 신고한 리포트를 제거
    id_idx = {id: idx for idx, id in enumerate(id_list)}  # answer 배열에 각 유저 별 인덱스에 해당하는 자리를 구분하기 위한 딕셔너리
    reported_counts = {id: 0 for id in id_list}  # 각 유저별로 신고당한 횟수를 담은 딕셔너리
    for r in report:
        _, reported = r.split()
        reported_counts[reported] += 1  # 신고 카운트
    for r in report:
        reporter, reported = r.split()
        if reported_counts[reported] >= k:  # k에 대한 문제 조건을 만족하는 경우
            answer[id_idx[reporter]] += 1  # answer 배열에 카운트
    return answer