[programmers] 신고 결과 받기

바울·2022년 9월 5일
0

문제

신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.

  • 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.

    • 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
    • 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
  • k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.

    • 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.

문제 출처

풀이

def solution(id_list, report, k):
    answer = [0] * len(id_list)
    report = set(report)
    
    dict = {name : [] for name in id_list}

    for r in report: 
        usr,re = r.split(" ")
        dict[re].append(usr)

    for i in dict:
        if len(dict[i]) >= k: 
            for j in dict[i]:
                answer[id_list.index(j)] += 1
                
    return answer

해쉬 구조를 이용해 풀어보았다.

모범 답안?

def solution(id_list, report, k):
    answer = [0] * len(id_list)    
    reports = {x : 0 for x in id_list}

    for r in set(report):
        reports[r.split()[1]] += 1

    for r in set(report):
        if reports[r.split()[1]] >= k:
            answer[id_list.index(r.split()[0])] += 1

    return answer

더 열심히 해야겠다..

0개의 댓글