코딩테스트 연습/프로그래머스

[Python - 프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기

슈퍼짱짱 2022. 3. 16. 16:38
반응형

파이썬으로 코딩테스트 연습 :: 프로그래머스 > 신고 결과 받기

 

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

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

 


Solution

 

def solution(id_list, report, k):
    report = set(report)
    answer = {x:0 for x in id_list} # 메일 보낼 횟수
    
    reports = {x:0 for x in id_list} # 신고 당한 횟수 
    for x in report :
        reports[x.split()[1]]+=1
        
    for x in report : # 신고당한 횟수가 k 보다 크면 신고한 사람 메일 보낼 횟수 1 추가
        if reports[x.split()[1]] >= k :
            answer[x.split()[0]] +=1
        
    return list(answer.values())

 


 

입력으로 받는 id_list, report, k는 예시와 같은 값으로 설명한다.

 

id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi", "muzi frodo"]
k=2

 

먼저, 한 유저는 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리된다는 조건이 있으므로 report = set(report)로 중복되는 값은 제거한다.

 

 

다음으로 각 유저별 메일 보낼 횟수와 신고당한 횟수를 dictionary형태로 생성한다. 초기값은 0으로 세팅한다.

 

 

이제 신고당한 횟수를 for문으로 업데이트해준다.

 

 

마지막으로 신고당한 횟수가 k번 이상인 유저에 대해 메일보낼 횟수를 업데이트해준다.

for문과 if문으로 간략하게 짤 수있다.

 

 

answer의 결과를 values()만 뽑아 list 형태로 반환한다.

 

반응형