알고리즘
[level 1] 신고 결과 받기 - 92334
토니짱
2022. 9. 16. 00:39
처음에 제출한 코드
def solution(id_list, report, k):
answer = [0]*len(id_list) #answer=[0,0,0,0](id_list의 길이만큼 0으로 채워주기)
stop=[]
rpt = {id:[] for id in id_list} #rpt={'muzi':[],'frodo':[]..}형태로 바꿔주기
#(신고당한놈:[신고한놈(들)])
for i in set(report):
i = i.split(' ')
rpt[i[1]].append(i[0]) #신고당한사람에게 신고자 값 넣어주기
for key,value in rpt.items():
if len(value) >= k: #value의 길이로 신고횟수 체크
for v in value:
answer[id_list.index(v)] += 1
return answer
문법도 익숙하지 않고 알랑 말랑 해서 시간이 조금 오래 걸렸다.
제출하고 보니 stop=[]은 뭐하러 만든 걸까?
제출 후 다른 사람들의 코드와 비교해보고 한번 더 풀어보았다.
def solution(id_list, report, k):
answer = [0]*len(id_list)
rpt = {id:0 for id in id_list}
print(rpt)
#키:id,val:신고당한횟수
for i in set(report):
rpt[i.split()[1]] += 1 #신고당한놈을 value 1 더해주기
for i in set(report):
if rpt[i.split()[1]] >= k:
answer[id_list.index(i.split()[0])] += 1
return answer
처음 만든 rpt를 { id : [] }가 아닌 { id : 숫자 }으로 바꾸니 훨씬 코드가 간결해졌다.
검색해보니 파이썬에서 split(' ')도 괄호 안에 아무것도 넣어주지 않으면 스페이스, 탭, 엔터 등으로 자동으로 나누어준다고 한다.
반응형