알고리즘/카카오기출

[Python] programmers 신고 결과 받기

정찡이 2022. 1. 22. 12:00
728x90

1. 문제 링크

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

 

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

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

programmers.co.kr

 

2. 문제 요약

  • 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return

 

 

3. 아이디어 정리

  1. 누가 누구를 신고했는지 dict 담기 & 신고당한 횟수 세기
  2. 이용자별로 자신이 신고한 사람이 k번 이상이면 처리된 횟수 + 1

 

 

4. 문제 풀이

4-1. 내 풀이

from collections import defaultdict

def solution(id_list, report, k):
    answer = list()
    count = defaultdict(int)   # 몇번 신고했는지
    user = defaultdict(set)  # 신고 리스트
    # 1. 누가 누구를 신고했는지 dict 담기 & 신고당한 횟수 세기
    for r in report:
        a, b = r.split()  # a가 b를 신고
        if b not in user[a]:   # 같은 사람이 1번 이상 신고 x
            user[a].add(b)
            count[b] += 1  # 신고당한 수
    # 2. 이용자별로 자신이 신고한 사람이 k번 이상이면 처리된 횟수 + 1
    for id in id_list:
        result = 0
        for u in user[id]:
            if count[u] >= k:
                result += 1
        answer.append(result)
    return answer

 

 

 

5. 결론

  • 구현 문제