def solution(id_list, report, k):
m_id, m_count = [], dict(zip(id_list,[0]*len(id_list)))
report = list(map(lambda x: x.split(" "), list(set(report))))
r_id = [id[1] for id in report]
r_count = dict(zip(id_list,[0]*len(id_list)))
for id in r_id:
r_count[id] += 1
for key, value in r_count.items():
if value >= k: m_id.append(key)
for id in report:
if id[1] in m_id:
m_count[id[0]] += 1
answer = list(m_count.values())
return answer
+ 다른 풀이
def solution(id_list, report, k):
report = list(map(lambda x: x.split(" "), list(set(report))))
r_count = dict.fromkeys(id_list, 0)
r_id = dict(zip(id_list, [[] for i in id_list]))
answer = [0 for i in range(len(id_list))]
for id in report:
r_count[id[1]] += 1
r_id[id[1]].append(id[0])
for key, value in r_id.items():
if r_count[key]>=k:
for i in value:
answer[id_list.index(i)] += 1
return answer
fromkeys(keys, value): 딕셔너리 value 초기화
빈 배열로 초기화하게 되면 append에서 value 전체가 하나의 빈 배열로 취급하는 것 같음 -> zip 활용 필요
딕셔너리 하나 줄이고 index를 반환해서 answer에 바로 저장(그러나 성능이 떨어지는 듯)