이번에 풀 문제는 신고 결과 받기이다.
2022 KAKAO BLIND RECRUITMENT 문제다.
그냥 해시써서 풀라는대로 풀었다.
결국 우리가 구해야되는건 어떤 사람이 얼마나 신고를 받았는 지 이기 때문에
신고 받은 사람을 key로 하고 신고한 사람들의 집합을 value로 하는 dict를 만들어야 겠다고 생각했다.
왜 집합이냐면 한 사람이 똑같은 사람을 계속 신고해도 한 번으로 취급하기 위해서다.
풀이 시간은 20~30분 정도 걸렸다.
from collections import defaultdict
def solution(id_list, reports, k):
report_dicts = defaultdict(set)
for report in reports:
# reporting은 신고 한 사람, reported는 신고된 사람
reporting, reported = report.split()
# 신고 된사람을 key로 신고한 사람들의 집합을 value로 저장함
report_dicts[reported].add(reporting)
msgs = dict.fromkeys(id_list, 0)
for reported, reportings in report_dicts.items():
# 이사람을 신고한 사람이 k명을 넘으면
if len(reportings) >= k:
# 신고한 사람들에게 메세지
for reporting in reportings:
msgs[reporting] += 1
return list(msgs.values())
from collections import defaultdict
def solution(id_list, reports, k):
report_dicts = defaultdict(set)
for report in reports:
reporting, reported = report.split()
report_dicts[reported].add(reporting)
msgs = dict.fromkeys(id_list, 0)
for reported, reportings in report_dicts.items():
if len(reportings) >= k:
for reporting in reportings:
msgs[reporting] += 1
return list(msgs.values())
나랑 똑같이 푼 게 많아서 생략