알고리즘/프로그래머스 문제풀이

[프로그래머스] lv.1 신고 결과 받기 python 풀이

감자156 2023. 10. 26. 18:53
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

모든 유저에 대해서 신고 당한 횟수, 날 신고한 유저 명단을 딕셔너리로 정리함.

모든 유저에 대해 받을 메일의 수를 0 으로 두고 새로운 딕셔너리를 만들고,

신고한 사람이 정지를 당하면 메일을 받을 때마다 += 1 해줌.

 

코드

def solution(id_list, report, k):
    status = {ID : 0 for ID in id_list} # 누적 신고수
    player = {ID : [] for ID in id_list} # ID를 신고한 사람 명단
    
    for i in set(report):
        normal, abnormal = i.split()
        status[abnormal] += 1
        player[abnormal].append(normal)

    user = {id : 0 for id in id_list} 
    for name in id_list:
        if status[name] >= k:
            for n in player[name]:
                user[n] += 1
            
    return list(user.values())
반응형