좋은 코드지만 시간 초과 남
def solution(id_list, reports, k):
stop = []
answer = [0] * len(id_list)
reports = set(reports)
# {wono : [] }
dicReports = {id: [] for id in id_list} # 딕셔너리에 value는 리스트 구조
for i in reports:
report = i.split(' ')
stop.append(report[1])
dicReports[report[0]].append(report[1])
stop = set([i for i in stop if stop.count(i) >= k])
for key, value in dicReports.items():
for s in stop:
if s in value:
answer[id_list.index(key)] += 1
return answer
두번째 방법
from collections import defaultdict
def solution(id_list, report, k):
answer = [0] * len(id_list)
report = set(report)
call_user_list = defaultdict(set) # 유저 A가 신고한 유저 목록(set)
ben_user_list = defaultdict(int) # 유저 A가 신고당한 횟수(int)
stop = []
for i in report:
call_user, ben_user = i.rsplit()
ben_user_list[ben_user] += 1
call_user_list[call_user].add(ben_user)
if ben_user_list[ben_user] == k:
stop.append(ben_user)
for s in stop:
for i in range(len(id_list)):
if s in call_user_list[id_list[i]]:
answer[i] += 1
return answer
다른 풀이
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
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (0) | 2022.04.01 |
---|---|
[프로그래머스] 내적 (0) | 2022.04.01 |
[프로그래머스] 음양 더하기 (0) | 2022.04.01 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.04.01 |
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2022.04.01 |
[프로그래머스] 키패드 누르기 (0) | 2022.04.01 |
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.04.01 |
[프로그래머스] 로또의 최고순위와 최저순위 (0) | 2022.04.01 |