문제
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를 사용하지 않고있는데
한번에 정답처리가 뜨면 그렇게 기분이 좋을 수 없다 ㅎㅎ..
'Problem Solving > Programmers' 카테고리의 다른 글
프로그래머스 (Level 1) : 로또의 최고 순위와 최저 순위 / Python / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) (0) | 2022.07.04 |
---|---|
프로그래머스 (Level 1) : 폰켓몬 / Python, set / 찾아라 프로그래밍 마에스터 (0) | 2022.05.15 |
프로그래머스 (Level 1) : 크레인 인형뽑기/ Python / 2019 카카오 개발자 겨울 인턴십 코딩테스트 (0) | 2022.05.11 |
프로그래머스 (Level 2) : 짝지어 제거하기 / Python (0) | 2022.05.06 |
프로그래머스 (Level 3) : 이중우선순위큐 / Python, heapq, try-except (0) | 2022.05.05 |