문제링크: 신고 결과 받기
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️⭐️ |
| 풀이시간 | 16분 |
| 제출횟수 | 2 |
| 인터넷검색유무 | yes |
🍒 My Code
def solution(id_list, report, k):
answer = [0 for i in range(len(id_list))]
singo = [[0 for j in range(len(id_list))] for i in range(len(id_list))]
for r in report:
FROM = id_list.index(r.split()[0])
TO = id_list.index(r.split()[1])
if singo[TO][FROM]==0:
singo[TO][FROM]=1
for i in range(len(singo)):
if sum(singo[i])>=k:
for j in range(len(singo)):
if singo[i][j]==1:
answer[j]+=1
return answer
💡 What I learned
2차원 리스트 초기화2차원 리스트 초기화시에 주의해야할점 : a = [[0]*n]*n]와 같이 초기화해주게되면 리스트를 초기화시킬 때 모든 행이 같은 객체로 인식되기 때문에(n개의 [0]*n이 모두 같은 객체로 인식됨)a[1][1] 값만 변화시켜도 1열의 값이 모두 변한다.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
-> set으로 중복 없앤것 good
-> 이중 list가 아닌 1차원 딕셔너리로 처리
def solution(id_list, report, k):
report_list = []
answer = [0 for _ in range(len(id_list))]
singo = [[0]*len(id_list) for _ in range(len(id_list))]
for i in report:
report_list.append(i.split())
for i in report_list:
singo[id_list.index(i[1])][id_list.index(i[0])]+=1
for i in singo:
count = 0
maybe = []
cnt = 0
for j in i:
if j !=0 :
count=count+1
maybe.append(cnt)
cnt=cnt+1
if count>=k:
for p in maybe:
answer[p] = answer[p]+1
return answer
정말 유익한 글이었습니다.