[프로그래머스/카카오 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