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

Baedonguri·2022년 5월 9일
0
post-thumbnail

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

제출 코드

1-1. 각 유저별로 신고 당한 횟수를 딕셔너리에 저장 (r_dic)
1-2. 각 유저별 신고한 대상을 딕셔너리에 저장 (u_dic)
2-1. 전체 유저 리스트를 순회하면서,
2-2. 해당 유저가 신고한 회원들이 k번 이상으로 신고(정지) 되었는지 확인.
-> 정지 되었다면 cnt를 1 늘려주고
한 유저에 대해 체크가 끝났다면 cnt 횟수를 answer 리스트에 추가해준다.

from collections import defaultdict
def solution(id_list, report, k):

    report = list(set(report))
    r_dic,u_dic = defaultdict(list), defaultdict(list)
    answer = []
    
    # 1.1 각 유저별로 신고 당한 횟수를 기록
    for rep in report:
        x,y = rep.split(" ")
        
        if y not in r_dic: 
            r_dic[y] = 1
        else: 
            r_dic[y] += 1
        u_dic[x] += [y] # 1.2 유저별 신고한 대상을 저장
    
    # 2.1 전체 유저 리스트 순회
    for u_id in id_list:
        cnt = 0
        # 2.2 해당 유저가 신고한 녀석들을 확인
        for v in u_dic[u_id]:
            # 2.3 정지되었다면 + 1
            if r_dic[v] >= k: 
                cnt += 1
        # 최종적으로 날릴 메일의 갯수
        answer.append(cnt)

    return answer
profile
Software Engineer

0개의 댓글