문제
id_list report k result
["muzi", "frodo", "apeach", "neo"] ["muzi frodo","apeach frodo", 2 [2,1,1,0]
"frodo neo","muzi neo",
"apeach muzi"]
["con", "ryan"] ["ryan con", "ryan con", 3 [0,0]
"ryan con", "ryan con"]
나의 해결
1. user와 cnt에 각각 유저별 신고한 id와 신고 당한 횟수를 dict 형태로 저장
2. id_list에 있는 아이디 중 user의 id와 같은 것에 신고 당한 횟수가 k 번을 넘어가면 result +1
3. result 수만큼 신고 결과 이메일을 받게 됨
from collections import defaultdict
def solution(id_list, report, k):
answer = []
report = list(set(report))
user = defaultdict(set)
cnt = defaultdict(int)
for r in report:
a,b = r.split()
user[a].add(b)
cnt[b] += 1
for id in id_list:
result = 0
for u in user[id]:
if cnt[u] >= k:
result += 1
answer.append(result)
return answer
print(solution(["muzi"], ["muzi frodo"], 2))
print(solution(["muzi", "frodo", "apeach", "neo"], ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"], 2))
다른 풀이
defaultdict()