Completion over Perfection

프로그래머스 - 신고 결과 받기 (파이썬3 Python3) 본문

파이썬 (Python)

프로그래머스 - 신고 결과 받기 (파이썬3 Python3)

난차차 2023. 8. 26. 23:34
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

코드 짜다가 헷갈려서 변수명을 한글로 짰습니다. 

한글 변수명은 처음 사용해봤는데 뭔가 오류가 날까봐 걱정됐지만 잘 돌아가네요. :)))))))))))))

 

문제를 간단히 설명하자면 게시판을 사용하는 유저들간에 서로 신고를 할 수가 있는데 

일정횟수 이상 신고를 받은 사람들(불량 이용자)을 추출해내고

이 불량이용자를 신고한 사람들에게 메일을 발송해주는 시스템을 만들어야 합니다. 

 

처리해야되는 로직은 다음과 같습니다.

 

① 누가 누구를 신고했는지 알아야하고,

② 신고를 받은 불량이용자의 신고받은 횟수가 K를 넘는지 알아내고

③ 만약 K번을 넘게 신고를 받은 사용자라면, 이 불량이용자를 신고한 모든 사람들 리스트를 정리해서

④ 각 사용자별로 불량이용자를 처리했다는 처리완료메일을 몇번이나 받을것인지 알아내야 합니다.

 

쉽게 이야기 하자면 내가 신고한 사람들이 5명이 있는데, 그 중에서 (다른 사용자들도 신고를 해서) K번 이상 신고를 받은 불량이용자가 2명이 나왔다면, 나는 2번의 처리완료 메일을 받게 되는 것이고 answer 배열에는 2를 넣어서 출력을 해줘야겠죠.

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def solution(id_list, report, k):
    # 중복신고 제거
    report = list(set(report))
 
    # 신고당한 횟수 저장
    신고당한횟수 = {}
    # 신고당한 사람들을 신고한 사람 리스트
    신고당한사람리스트 = {}
    # 신고한 내역 (동일한 사람이 여러번 신고한 경우를 제거하기 위함)
 
    for data in report:
        신고한사람 = data.split(" ")[0# 신고한 사람
        신고당한사람 = data.split(" ")[1# 신고당한 사람
        # print("신고한사람 : ", 신고한사람, "신고당한사람 : ", 신고당한사람)
        if 신고당한사람 in 신고당한사람리스트:
            신고당한사람리스트[신고당한사람].append(신고한사람)
        else:
            신고당한사람리스트[신고당한사람] = [신고한사람]
        if 신고당한사람 in 신고당한횟수:
            신고당한횟수[신고당한사람] += 1
        else:
            신고당한횟수[신고당한사람] = 1
        # print("신고당한사람리스트 : ", 신고당한사람리스트)
 
    # print("신고당한횟수 : ", 신고당한횟수, "신고당한사람리스트", 신고당한사람리스트)
 
    # 신고당한 횟수가 k번 이상인 사람들
    일정횟수이상신고당한사람 = []
    for key, value in 신고당한횟수.items():
        if value >= k:
            일정횟수이상신고당한사람.append(key)
 
    # print(일정횟수이상신고당한사람)
 
    발송메일횟수 = dict.fromkeys(id_list, 0)
    # print(발송메일횟수)
 
    for 신고당한사람 in 일정횟수이상신고당한사람:
        # print("신고당한사람 : " , 신고당한사람)
        메일발송리스트 = 신고당한사람리스트[신고당한사람]
        for 최종발송처 in 메일발송리스트:
            발송메일횟수[최종발송처]+=1    
    
    # print("발송메일횟수 : ", 발송메일횟수)
    answer = []
    answer = list(발송메일횟수.values())
    return answer
cs

 

반응형
Comments