신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.
이용자의 ID가 담긴 문자열 배열 id_list
, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report
, 정지 기준이 되는 신고 횟수 k
가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요.
id_list
의 길이 ≤ 1,000id_list
의 원소 길이 ≤ 10id_list
의 원소는 이용자의 id를 나타내는 문자열이며 알파벳 소문자로만 이루어져 있습니다.id_list
에는 같은 아이디가 중복해서 들어있지 않습니다.report
의 길이 ≤ 200,000report
의 원소 길이 ≤ 21report
의 원소는 "이용자id 신고한id"형태의 문자열입니다.k
≤ 200, k
는 자연수입니다.id_list
에 담긴 id 순서대로 각 유저가 받은 결과 메일 수를 담으면 됩니다.def solution(id_list, reports, k):
dic = {id:set([]) for id in id_list}
result ={id:0 for id in id_list}
for report in reports:
u,target=report.split(" ")
dic[target].add(u)
for target in dic:
if len(dic[target])>=k:
for id in dic[target]:
result[id] = result[id]+1
return list(result.values())
dic
: (사용자 id) - (해당 id를 신고한 id들 집합)result
: (사용자 id) - (정지확인 메일 받은 횟수)k
(정지 기준)이상일때는 해당 유저를 신고한 id들에게 메일 보내기(++1)위와 같은 문제에서 무엇을 키로 설정할지 고민이 많이 되었다