개발/PS

[Python] 프로그래머스 Lv1 신고 결과 받기

유훈 | Yuhun 2022. 1. 23. 18:19
반응형

풀이

def solution(id_list, report, k):
    declare = {} # 신고당한 사람 : 신고한 사람
    declared = [] # 유저 순서대로 신고 당한 수
    answer = {}
    for i in id_list: # 유저 수 만큼 배열 생성
        declare[i] = []
        answer[i] = 0 // 초기 신고 값은 (이름: 0)

    for i in report:
        a, b = i.split(" ") # 신고하는 사람과 당한 사람을 나눔
        if a not in declare[b]: # 중복 신고 체크
            declare[b].append(a) # 중복이 아니라면 추가

    for i in declare.values(): # 각 유저별 신고 당한 수 저장
        declared.append(len(i))

    for index, value in enumerate(declared): # 인덱스와 값을 돌림
        if value >= k: # k번 이상 신고 당했을 때
            for i in declare[id_list[index]]: # 신고한 사람에게 +1씩
                answer[i] += 1

    return list(answer.values()) # 신고한 사람이 받은 메일

저는 이 문제를 dictionary와 list를 이용해 풀었는데 체크하는 과정에서 for문을 너무 많이 썼다 생각했습니다.

다른 사람의 풀이를 보니 set을 사용하면 편리했네요.

알고는 있지만 응용이 어려운 것 같습니다. 적재적소에 활용하는 능력을 키워야 할 듯 합니다.

반응형