첫번째 코드
필요한 것들을 하나하나 만들어가면서 차차 진행하면 된다! 라고 생각했다...
일단 중복 데이터 제거하고!!!
이렇게 1, 2, 3, 4가 필요하다고 생각하고 진행했다!!
def solution(id_list, report, k):
check = [[] for _ in range(len(id_list))]
warning = [0] * len(id_list)
stop = []
mail = [0] * len(id_list)
data = []
# 중복 데이터 제거
data1 = set()
for i in report:
data1.add(i)
data1 = list(data1)
# 데이터 내부 분리
for i in range(len(data1)):
data.append(data1[i].split(" "))
# 신고 한 사람, 받은 사람 정리
for i in data:
for j in range(len(id_list)):
if i[0] == id_list[j]:
check[j].append(i[1])
# 신고 받은 개수
for i in data:
for j in range(len(id_list)):
if i[1] == id_list[j]:
warning[j] += 1
# 이용 정리 당하는 사람
for i in range(len(warning)):
if warning[i] >= k:
stop.append(id_list[i])
for i in stop:
for j in range(len(check)):
if i in check[j]:
mail[j] += 1
return mail
시간초과잉....
두번째 코드
불필요한 반복을 줄이자!! 라는 생각으로 진행했다!!
def solution(id_list, report, k):
check = [[] for _ in range(len(id_list))]
warning = [0] * len(id_list)
stop = []
mail = [0] * len(id_list)
# 중복 데이터 제거
report = list(set(report))
# 데이터 내부 분리
for i in range(len(report)):
data = report[i].split(" ")
# 신고 한 사람, 받은 사람 정리
for j in range(len(id_list)):
if data[0] == id_list[j]:
check[j].append(data[1])
if data[1] == id_list[j]:
warning[j] += 1
# 이용 정지 당하는 사람
for i in range(len(warning)):
if warning[i] >= k:
stop.append(id_list[i])
for i in stop:
for j in range(len(check)):
if i in check[j]:
mail[j] += 1
return mail
나아지긴 했지만 여전히 시간 초과;;;
세번째 코드
그러다 다른 분에게 물어봤더니 딕셔너리를 사용하면 용량을 더 줄일 수 있다!! 라고 하셔서
stop을 제외하고 나머지는 딕셔너리로 구성일 가능하므로 모두 변경하였다.
def solution(id_list, report, k):
check = {id_:[] for id_ in id_list}
warning = {id_:0 for id_ in id_list}
stop = []
mail = {id_:0 for id_ in id_list}
# 중복 데이터 제거
report = list(set(report))
# 데이터 내부 분리
for i in report:
data = i.split(" ")
sender = data[0]
receiver = data[1]
if sender in check:
check[sender].append(receiver)
if receiver in warning:
warning[receiver] += 1
# 이용 정지 당하는 사람
for id_, count in warning.items():
if count >= k:
stop.append(id_)
for i in stop:
for id_, receivers in check.items():
if i in receivers:
mail[id_] += 1
return list(mail.values())
통과!
아고고.. 고생 많았다..!
링크