알고리즘/카카오기출
[Python] programmers 신고 결과 받기
정찡이
2022. 1. 22. 12:00
728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/92334
2. 문제 요약
- 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return
3. 아이디어 정리
- 누가 누구를 신고했는지 dict 담기 & 신고당한 횟수 세기
- 이용자별로 자신이 신고한 사람이 k번 이상이면 처리된 횟수 + 1
4. 문제 풀이
4-1. 내 풀이
from collections import defaultdict
def solution(id_list, report, k):
answer = list()
count = defaultdict(int) # 몇번 신고했는지
user = defaultdict(set) # 신고 리스트
# 1. 누가 누구를 신고했는지 dict 담기 & 신고당한 횟수 세기
for r in report:
a, b = r.split() # a가 b를 신고
if b not in user[a]: # 같은 사람이 1번 이상 신고 x
user[a].add(b)
count[b] += 1 # 신고당한 수
# 2. 이용자별로 자신이 신고한 사람이 k번 이상이면 처리된 횟수 + 1
for id in id_list:
result = 0
for u in user[id]:
if count[u] >= k:
result += 1
answer.append(result)
return answer
5. 결론
- 구현 문제