[프로그래머스] 신고결과 받기

그녕·2024년 4월 17일
0

알고리즘 문제 풀이

목록 보기
30/35

문제 링크

코드가 시간초과가 떠서..

def solution(id_list, report, k):
    answer = [0]*len(id_list)
    cnt= [0]*len(id_list) #신고 당한 횟수
    stop=[] # 정지된 사람
    sreport = list(set(report))
    for i in range(len(sreport)):
        for j in range(len(id_list)):
            if id_list[j] == sreport[i].split(" ")[1]:
                cnt[j]+=1
    for i in range(len(id_list)):
        if cnt[i]>=k:
            stop.append(id_list[i])
    for i in range(len(sreport)):
        for j in range(len(id_list)):
            if sreport[i].split(" ")[0]==id_list[j] and sreport[i].split(" ")[1] in stop:
                answer[j]+=1
    return answer

다른 사람들의 코드를 뜯어보고 참고했다

def solution(id_list, report, k):
    answer = [0]*len(id_list)
    reported = {x:0 for x in id_list}
    sreport = set(report)
    for i in sreport: #신고당한 횟수 기록
        a,b = i.split()
        reported[b]+=1
    for i in sreport:
        a,b = i.split()
        if reported[b]>=k:
            answer[id_list.index(a)]+=1
    return answer

리스트를 여러개 만들어서 이중for문을 써서 각각 비교하지 말고
참고한 코드처럼 dict를 쓰는것을 습관으로 들어야겠다...ㅠㅜㅠ
힝구,..

0개의 댓글