문제

 

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

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

programmers.co.kr

 

출처 : 프로그래머스

 

id_list의 유저들이 각각 본인이 신고한 유저가

k번 이상 본인 포함 다른 사람들에게 신고당했을 시 게시판 이용을 정지당하는데,

각 유저가 신고해서 정지당한 유저들 수를 출력하는 문제이다.

 

한 유저가 특정 유저를 여러번 신고할 수 있지만 해당 경우는 신고 1회로 친다.

 

 

풀이

import collections as c

def solution(id_list, report, k):
    result = []
    rpdict = c.defaultdict(list) 
    stop = c.defaultdict(int)
    
    for i in range(len(report)):
        who, rp = report[i].split()
        
        if rp not in rpdict[who]: #이미 신고한 유저는 추가 스킵
            rpdict[who].append(rp)
            stop[rp]+=1
    
    for x in id_list:
        cnt=0
        for y in rpdict[x]:
            if stop[y]>=k:
                cnt+=1
        result.append(cnt)
    
    return result

 

유저마다 신고한 유저를 추가할 list형 딕셔너리 rpdict 와

정지대상 유저를 구하기 위한 int형 딕셔너리 stop을 이용해 풀었다. 

 

 

코딩테스트환경에 익숙해질겸 프로그래머스에서는 IDE를 사용하지 않고있는데

한번에 정답처리가 뜨면 그렇게 기분이 좋을 수 없다 ㅎㅎ..

반응형

+ Recent posts