https://programmers.co.kr/learn/courses/30/lessons/92334
from collections import defaultdict
def solution(id_list, report, k):
answer = [0] * len(id_list)
dic = defaultdict(list)
count = defaultdict(int)
for re in report:
a, b = re.split(" ")
if b not in dic[a]:
dic[a].append(b)
count[b] += 1
for key in count.keys():
if count[key] >= k:
for i in range(len(id_list)):
if id_list[i] in dic:
if key in dic[id_list[i]]:
answer[i] += 1
return answer
다른 사람 코드를 보고나서 다시 보니, 너무 수치스러운 코드..
만약 다른사람이 이렇게 짜놓은 코드를 보면 싫을것 같다.
이 쉬운걸 이렇게 구구절절 짜놓다니 하고 말이다.
다시 한번 짜보자.
def solution(id_list, report, k):
answer = [0] * len(id_list)
dic = {x : 0 for x in id_list}
report = list(set(report))
for r in report:
dic[r.split()[1]] += 1
for r in report:
if dic[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
바뀐점
1) 불필요한 a, b 변수 할당.
2) 비효율적인 dictionary 생성 및 초기화 수정.
3) set을 사용한 중복 문제 해결.
느낀점
dictionary는 사용을 어떻게 하느냐에 따라서 천지차이라는걸 느낌.
더 익숙해지고, 간단명료한 방식을 사용하자.