from collections import defaultdict
def solution(id_list, report, k):
answer = []
report = list(set(report))
result = defaultdict(list)
ban = defaultdict(int)
for rep in report:
rep = rep.split(" ")
result[rep[0]] += [rep[1]]
ban[rep[1]] += 1
for user in id_list:
mail = 0
# if ban[user] >= k:
# mail += 1
for rep in result[user]:
if ban[rep] >= k:
mail += 1
answer.append(mail)
return answer
Dictionary를 써서 해결했다. 저기 두줄의 주석은 문제를 제대로 이해하지 못한 난독증으로 인한 결과.
반성의 의미로 남겨두었다. 내가 신고한 결과가 처리된 메일 받는 수만 카운팅 하는건데,
내가 신고 당해서 메일 받는 것도 추가로 카운팅 해서 틀렸었다.
Defaultdict는 처음 써봤는데 앞으로도 종종 유용하게 쓰일 것 같다.
import 해야해서 써도 괜찮은가 싶기는 하지만.
def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports[r.split()[1]] += 1
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
접근은 비슷한거 같다 하지만 훨씬 깔끔하다. 외부 라이브러리도 안썼다.
.index를 써서 dictionary를 따로 만들지 않고도 dictionary처럼 썼다. 새로 하나 배웠다.
화이팅.