코딩테스트/programmers (python)

Programmers / 1단계 / 신고 결과 받기 / python / 2022 KAKAO BLIND RECRUITMENT

seulll 2024. 3. 13. 17:58

 

코딩테스트 연습 - 신고 결과 받기 | 프로그래머스 스쿨 (programmers.co.kr)

 

 

 

나의 풀이

def solution(id_list, report, k):
    id_dict={x: 0 for x in id_list}
    rep_id={x: 0 for x in id_list}
    arr=[]
    id = []
        
    for i in set(report):
        id_dict[i.split()[1]] +=1
    
    for i in id_dict.keys():
        if id_dict[i] >= k:
            id.append(i)

    for i in set(report):
        if i.split()[1] in id:
            rep_id[i.split()[0]]+=1
            
    return [_ for _ in rep_id.values()]

 

 

모범 답안

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

 

메일을 받은 횟수를 딕셔너리가 아닌 0으로 초기화 된 answer 배열로 저장하여 신고 당한 횟수가 k 이상인 경우에 인덱스로 바로 접근할 수 있다.