[programmers] 신고 결과 받기

데린이·2022년 4월 2일
0

유저들간의 신고 결과를 산출하는 코드이다.

22-04-02 code

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 사용하지 않기.

22-04-04 code

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 구조로 해결함.

profile
취뽀를 기원하는 취준생입니다!

0개의 댓글