알고리즘

[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(' ')도 괄호 안에 아무것도 넣어주지 않으면 스페이스, 탭, 엔터 등으로 자동으로 나누어준다고 한다.

 

반응형