실패 코드:
def solution(id_list, report, k):
report = set(report)
result = [0 for _ in id_list]
blacklist = [couple.split()[1] for couple in report]
dup = [name for name in blacklist if blacklist.count(name) >= k]
for couple in report:
reporter, reportee = couple.split()
if reportee in set(dup):
result[id_list.index(reporter)] += 1
return result
시간 초과가 나서 계속 탈락했다. for loop 때문에 그런 것 같아서 blacklist 부분을 딕셔너리로 변환하여 다시 코드를 짜보니 성공. for loop을 세번 쓰는 것에는 변함이 없지만 리스트를 순회하는 것보다 딕셔너리를 순회하는 것이 더 빠른듯하다.
성공코드:
def solution(id_list, report, k):
report = set(report)
result = [0 for _ in id_list]
blackdict = defaultdict(int)
for couple in report:
blackdict[couple.split()[1]] += 1
blacklist = []
for key, value in blackdict.items():
if value>=k:
blacklist.append(key)
for couple in report:
reporter, reportee = couple.split()
if reportee in set(blacklist):
result[id_list.index(reporter)] += 1
return result