🤔 문제


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

 

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

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

programmers.co.kr

😀 풀이


위 문제는 report의 크기를 고려해보았을 때 단순 배열을 사용하면 시간이 모자랄 수 있을 것이라 예상할 수 있습니다. 따라서 신고 내역을 Python의 dict 자료형으로 다루어 풀이를 진행했습니다.

 

신고 내역을 다루는 dict 자료형의 key 값은 신고당한 유저, value 값은 신고한 유저들로 정했습니다.

또한 문제 조건에 따라 신고하는 유저는 동일 유저를 여러 번 신고할 수 없고 여러 번 신고한다면 한 번으로 처리해야 하여 신고한 유저들을 다루는 자료형은 Set을 사용했습니다.

 

적절한 자료구조 선택과 key, value값 구성만 생각해내면 그 이후론 구현이 어렵지않습니다.

 

💻 풀이 코드는 아래와 같습니다.

def solution(id_list, report, k):
# Python 3.6에서부터는 dict 자료형이 순서를 유지해 answer를 아래와 같이 사용할 수 있습니다.
    answer = { id : 0 for id in id_list }
    report_dict = { id : set() for id in id_list }
    for r in report:
        report_user, reported_user = r.split(' ')
        report_dict[reported_user].add(report_user)
    for key, value in report_dict.items():
        if len(value) >= k:
            for v in value:
                answer[v] += 1
    return list(answer.values())
반응형
복사했습니다!