[프로그래머스] 2022 KAKAO BLIND : 신고 결과 받기 (python)

0

Problem Solving

목록 보기
6/49
post-thumbnail

문제

https://programmers.co.kr/learn/courses/30/lessons/92334

풀이

from collections import defaultdict,Counter
def solution(id_list, report, k):
    report= list(set(report)) # 중복제거
    
    # answer = 메일받을 리스트, 0으로 초기화
    answer = dict()
    for i in id_list:
        answer[i] = 0
    
    dic = defaultdict(list)
    ban = []
    # 신고 결과를 정리
    # dic  = {신고한사람 : 신고받은사람}
    # ban = 신고받은사람 담기
    for i in report:
        nick = i.split()
        dic[nick[0]].append(nick[1])
        ban.append(nick[1])
    
    # 신고받은사람 리스트에서 K번 신고받은 사람만 남김 (계정 정지)
    ban=list(map(lambda x:x[0],list(filter(lambda x:x[1]>=k,Counter(ban).items()))))
    
    # 신고결과 정리한 딕셔너리를 돌면서
    # value값과 ban리스트의 교집합체크.
    # 교집합의 개수가 메일받을 개수다.
    for key, value in dic.items():
        answer[key] += len(set(value)&set(ban))
    
    # answer의 value값만 출력
    return list(answer.values())

0개의 댓글