[Programmers] 신고 결과 받기 (문자열 Lv.1) - Python

꼬마요리사레미·2023년 5월 30일

Algorithm

목록 보기
31/41

1. 문제


신고 결과 받기

2. 풀이


코드
def solution(id_list, report, k):
    answer = []
    suspended_users = []
    user_reports = {}
    user_counts = {}
    
    for user_id in id_list:
        user_reports[user_id] = []
        user_counts[user_id] = 0
    
    for report_info in report:
        reporter, reported = report_info.split(' ')
        if reported not in user_reports[reporter]:
            user_reports[reporter].append(reported)
            user_counts[reported] += 1
    
    for user_id, count in user_counts.items():
        if count >= k:
            suspended_users.append(user_id)
    
    for user_id in id_list:
        count = 0
        for suspended_user in suspended_users:
            if suspended_user in user_reports[user_id]:
                count += 1
        answer.append(count)
    
    return answer
입력 및 출력
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
k = 2

>> [2,1,1,0]

3. 로직


  1. 각 사용자의 신고 정보를 저장하기 위해 user_reports 딕셔너리를 초기화한다.

  2. 각 사용자가 신고당한 횟수를 저장하기 위해 user_counts 딕셔너리를 초기화한다.

  3. report 리스트를 순회하면서 신고 정보를 처리한다. 신고당한 사용자를 신고한 사용자의 신고 리스트에 추가하고, 신고당한 사용자의 신고 횟수를 1 증가시킨다.

  4. user_counts 딕셔너리를 순회하면서 k 이상으로 신고당한 사용자를 suspended_users 리스트에 추가한다.

  5. id_list를 순회하면서 각 사용자가 suspended_users에 포함된 사용자를 신고한 횟수를 세고, answer 리스트에 추가한다.

  6. answer 리스트를 반환한다.

0개의 댓글