Algorithm/Programmers

[프로그래머스/카카오 92334] 신고 결과 받기 (Python)

문제 링크 #

개요 #

  • 딕셔너리를 사용해 해결할 수 있는 문제다.

문제 조건 #

  • 일정 횟수 이상 신고당한 불량 이용자를 신고한 이용자들에게 발송되는 메일의 횟수를 리스트로 반환하는 문제다.

문제 해설 #

  • 이용자 자신이 신고당한 횟수(report_dict)와 이용자가 신고한 대상 목록(mail_dict)을 각각 기록할 필요가 있다.
  • 각각의 신고 건수에 대해 반복하며 두 가지 딕셔너리에 기록한다.
  • 이용자id를 key로 참고하여 각각의 이용자마다 자신이 신고한 대상 중 정지된 대상의 수를 계산한다.

해설 코드 #

python
def solution(id_list, report, k):
    report_dict = {id: 0 for id in id_list}
    mail_dict = {id: set() for id in id_list}

    for rep in set(report):
        user, target = rep.split()
        report_dict[target] += 1
        mail_dict[user].add(target)

    answer = []

    for user, targets in mail_dict.items():
        answer.append(sum([1 if report_dict[target] >= k else 0
                            for target in targets]))

    return answer
PREV [프로그래머스/카카오 72410] 신규 아이디 추천 (Python) NEXT 다음 게시글이 없습니다