본문 바로가기
Algorithm/프로그래머스

[프로그래머스][2022 카카오 블라인드 테스트] 신고 결과 받기 - 파이썬 풀이

by daewooki 2022. 4. 26.
반응형

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

 

 

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

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

programmers.co.kr

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(id_list, report, k):
    id_dict = dict.fromkeys(id_list,0)
    answer = []
    report_dict={}
    for i in report:
        n_from = i.split(' ')[0]
        n_to = i.split(' ')[1]
        if n_to not in report_dict.keys():
            report_dict[n_to]=[]
        report_dict[n_to].append(n_from)
        report_dict[n_to] = list(set(report_dict[n_to]))
 
    for key, value in report_dict.items():
        if len(value) >= k:
            for i in value:
                id_dict[i]+=1
 
    answer = list(id_dict.values())
    return answer
cs
id_list를 딕셔너리 형태로 만들어줌(처리 결과를 받을 구조)
report 리스트를 돌면서 누가(n_from) 누구(n_to)를 신고하였는지 확인하여 신고 당한 사람을 key로, 신고 한 사람을 value로 넣어준다.

그리고 중복되면 안되기 때문에 set으로 중복을 제거한다.

 

report_dict를 순회하며 k번 이상 신고를 당한 유저를 신고한 유저에게 +1 씩 하여 처리 결과의 개수를 늘려준다.

 

id_dict의 value를 list 화 하여 리턴하면 끝난다.

 

반응형

댓글