알고리즘/프로그래머스

[2022 KAKAO BLIND RECRUITMENT] 신고 결과 받기

래울 2022. 6. 24. 01:30

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

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

 

 

풀긴 풀었는데, 효율성이 좋을지는 모르겠다.

 

유저 : (신고한 유저목록)  과 같은 자료구조를 만들고 , 게시판 이용이 정지되는 유저목록을 구해서

교집합 연산 후에 개수를 세서 발송해야하는 메일 개수를 구하면된다.

 

from collections import defaultdict
def solution(id_list, report, k):
    result, ban_id = [], []
    users, reported = dict(), dict()
    for i in id_list:
        users[i] = set()
        reported[i] = 0
    for r in set(report):
        r1, r2 = r.split(' ')    #신고자/피신고자
        reported[r2] += 1
        users[r1].add(r2)
        if reported[r2] >= k:
            ban_id.append(r2)
    
    for u in users:
        result.append(len(set(users[u]) & set(ban_id)))
    return result