코딩 테스트/Python

신고 결과 받기

susinlee 2025. 1. 2. 02:25

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이]

1. 중복된 신고는 누적되지않으므로 중복되지 않은 신고를 하나씩 가져와서

2. 신고당한 사람을 1씩 카운트 해주고, 신고자의 신고목록에 추가한다

(왜?) → k번 기준을 필터링하기 위해서 신고당한 개수를 세어야 하고, 신고자가 신고한 사람이 정지되었을 때 해당 정보를 받아야 하기 때문에 신고목록을 작성해야 함

3. 정지당할 사람의 목록을 작성한다.

(왜?) → 그래야 신고자의 신고목록에서 정지당한 유저의 수를 셀 수 있으니까

4. 개수를 인덱스 순서대로 작성해야 하기 때문에 순서대로 유저를 가져온다

5. 가져온 유저로 신고자 목록에 접근해서 해당 목록의 요소를 하나씩 가져와서 정지유저명단에 있는지 확인하고 있다면 가져온다.

6. 가져온 애들의 개수를 센다

 

from collections import defaultdict

def solution(id_list, report, k):
    reported_count = defaultdict(int)
    reporter_info = defaultdict(set)

    for r in set(report):
        user, target = r.split()
        reported_count[target] += 1
        reporter_info[user].add(target)

    banned_users = {user for user, count in reported_count.items() if count >= k}

    return [len([target for target in reporter_info[user] if target in banned_users]) for user in id_list]

 

'코딩 테스트 > Python' 카테고리의 다른 글

83. 귤고르기  (0) 2025.01.06
82. 멀리 뛰기  (1) 2025.01.05
공원 산책  (0) 2024.12.31
달리기 경주  (1) 2024.12.30
[PCCP 기출문제] 2번 / 석유 시추  (2) 2024.12.28