문제 설명
나의 풀이:
import numpy as np
def solution(id_list, report, k):
answer = [0]*len(id_list)
user = [[0] * len(id_list) for i in range(len(id_list))]
check_list = [0]*len(id_list)
for i in range(0,len(report)):
a = report[i].split()
user[id_list.index(a[0])][id_list.index(a[1])] = 1
for i in range(0, len(id_list)):
for j in range(0, len(id_list)):
check_list[i] += user[j][i]
if check_list[i] >= k:
for o in range(0, len(id_list)):
if user[o][i] == 1:
answer[o] += 1
break
#print(answer)
return answer
#id_list = ["con", "ryan"]
#report = ["ryan con", "ryan con", "ryan con", "ryan con"]
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
solution(id_list, report, 2)
- user[신고한 자][신고 받은 자] 2차 list 생성
- check_list를 만들어 신고 받은 횟수를 넣음
- 똑같은 유저가 한 유저를 계속 신고하여도 1회로 인정 → 중복을 제거하는 것이 중요하다고 생각함
- 따라서 몇 번을 신고해도 중복이 안되도록 user list에 +=1이 아닌 =1을 해줌.
다른 사람의 풀이 :
- {x: 0 for x in list}
- set()을 이용해 report 리스트에 중복되는 요소를 제거해줌
구글링 한거
- [[0] * len(id_list) for i in range(len(id_list))]