from functools import reduce
from collections import Counter
def solution(id_list, report, k):
answer = [0 for _ in range(len(id_list))]
users = {i:[] for i in id_list}
for r in report:
er, ee = r.split(' ')
if ee not in users[er]:
users[er] += [ee]
total = list(reduce(lambda x,y:x+y, users.values()))
for key, v in Counter(total).items():
if v >= k:
for i, val in enumerate(users.values()):
if key in val:
answer[i] += 1
return answer
set
자료형을 활용하지 않아 너무 비효율적인 코드를 작성{'user':'reported1', 'reported2', ..}
와 같은 형식으로 딕셔너리 작성할 필요 없었음Counter
도 굳이 사용할 필요가 없었다고 생각https://github.com/algo4sik2/CoTe/blob/main/Programmers/2022-01/20/yejin.py
def solution(id_list, report, k):
length = len(id_list)
user = {x : 0 for x in id_list}
answer = [0 for i in range(length)]
# 신고 당한 유저의 신고 수 1씩 증가
for i in set(report):
user[i.split()[1]] += 1
# k 보다 신고 많이 받았으면, 신고한 사람의 결과 1 증가
for i in set(report):
if user[i.split()[1]] >= k:
answer[id_list.index(i.split()[0])] += 1
return answer