def solution(id_list, report, k):
# 신고자와 신고당한 사람을 기록
report_list = {}
# 해당 사람의 신고 횟수
report_count = {}
# 신고자에게 알리기 위해 카운팅을 하는 딕셔너리
result_lst = {}
for id in id_list:
report_count[id] = 0
result_lst[id] = 0
for re in report:
a = re.split(' ')
# 신고자가 첫 신고이면 해당 키에 리스트로 넣어준다.
# 신고당한 사람의 신고횟수도 카운트
if a[0] not in report_list.keys():
report_list[a[0]] = [a[1]]
report_count[a[1]] += 1
# 신고자가 첫 신고가 아니라면 만들어진 리스트에 append
# 신고당한 사람의 신고횟수도 카운트
elif a[1] not in report_list[a[0]]:
report_list[a[0]].append(a[1])
report_count[a[1]] += 1
# 신고자의 신고목록 리스트를 순회하면서 신고당한 사람의 횟수를 result_lst에 저장
for result in report_list.items():
for check in result[1]:
if check == []:
break
elif report_count[check] >= k:
result_lst[result[0]] += 1
# result_lst의 밸류 값을 리스트 형식으로 출력
return [*result_lst.values()]
자칫하면 시간초과가 날 수 있는 문제.
처음에 중복 체크 또한 리스트로 만들어서 체크를 했는데 시간초과에 막혔다.
주의 깊게 봐야할 것은 한 사람이 같은 사람을 여러번 신고하면 한번으로 생각하기