유저들간의 신고 결과를 산출하는 코드이다.
from collections import Counter
def solution(id_list, report, k):
#'''
#id_list = str
#report = str str
# k = int
#'''
warninglist = list(set(report))
warningfrom = [wl.split()[0] for wl in warninglist]
warningto = [wl.split()[1] for wl in warninglist]
warninguser = [key for key,value in Counter(warningto).items() if value >= k]
final_list = [wl.split()[0] for wl in warninglist if wl.split()[1] in warninguser]
answer =[]
mailcount = Counter(final_list)
for uid in id_list:
if uid in mailcount.keys():
answer.append(mailcount[uid])
else:
answer.append(0)
return answer
collection 라이브러리의 Counter 함수를 이용하여 각 유저들이 받는 신고 횟수를 산출했다.
Tip.
1. answer = [0] * len(id_list) 으로 시작하기
2. collection Counter 사용하지 않기.
def solution(id_list, report, k):
# answer default
answer = [0]*len(id_list)
# delete duplicated warnings
report_rep_del = list(set(report))
# List warned users up
warning_list = [warning.split()[1] for warning in report_rep_del]
warning_list_final = []
for wl in list(set(warning_list)):
if len([wl for w_l in warning_list if w_l == wl]) >= k:
warning_list_final.append(wl)
# List warning users up
warning_mail_list = [rrd.split()[0] for rrd in report_rep_del if rrd.split()[1] in warning_list_final]
i = 0
for uid in id_list:
answer[i] = len([wml for wml in warning_mail_list if wml == uid])
i += 1
return answer
for in if 구조로 해결함.