From 672a48614cbbdb34febbbab640de8fd66661c1c8 Mon Sep 17 00:00:00 2001 From: SSUM <116950962+ssum21@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:49:47 +0900 Subject: [PATCH] =?UTF-8?q?[level=201]=20Title:=20=EC=8B=A0=EA=B3=A0=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EB=B0=9B=EA=B8=B0,=20Time:=20168.99=20ms,?= =?UTF-8?q?=20Memory:=2044.3=20MB=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1/92334. 신고 결과 받기/README.md | 207 ++++++++++++++++++ .../1/92334. 신고 결과 받기/신고 결과 받기.py | 28 +++ 2 files changed, 235 insertions(+) create mode 100644 프로그래머스/1/92334. 신고 결과 받기/README.md create mode 100644 프로그래머스/1/92334. 신고 결과 받기/신고 결과 받기.py diff --git a/프로그래머스/1/92334. 신고 결과 받기/README.md b/프로그래머스/1/92334. 신고 결과 받기/README.md new file mode 100644 index 0000000..fac87dd --- /dev/null +++ b/프로그래머스/1/92334. 신고 결과 받기/README.md @@ -0,0 +1,207 @@ +# [level 1] 신고 결과 받기 - 92334 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/92334) + +### 성능 요약 + +메모리: 44.3 MB, 시간: 168.99 ms + +### 구분 + +코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT + +### 채점결과 + +정확성: 100.0
합계: 100.0 / 100.0 + +### 제출 일자 + +2025년 02월 15일 10:49:44 + +### 문제 설명 + +
문제 설명
+ +

신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.

+ + + +

다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 이상 신고당하면 이용 정지)인 경우의 예시입니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
유저 ID유저가 신고한 ID설명
"muzi""frodo""muzi"가 "frodo"를 신고했습니다.
"apeach""frodo""apeach"가 "frodo"를 신고했습니다.
"frodo""neo""frodo"가 "neo"를 신고했습니다.
"muzi""neo""muzi"가 "neo"를 신고했습니다.
"apeach""muzi""apeach"가 "muzi"를 신고했습니다.
+

각 유저별로 신고당한 횟수는 다음과 같습니다.

+ + + + + + + + + + + + + + + + + + + + + + + +
유저 ID신고당한 횟수
"muzi"1
"frodo"2
"apeach"0
"neo"2
+

위 예시에서는 2번 이상 신고당한 "frodo"와 "neo"의 게시판 이용이 정지됩니다. 이때, 각 유저별로 신고한 아이디와 정지된 아이디를 정리하면 다음과 같습니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
유저 ID유저가 신고한 ID정지된 ID
"muzi"["frodo", "neo"]["frodo", "neo"]
"frodo"["neo"]["neo"]
"apeach"["muzi", "frodo"]["frodo"]
"neo"없음없음
+

따라서 "muzi"는 처리 결과 메일을 2회, "frodo"와 "apeach"는 각각 처리 결과 메일을 1회 받게 됩니다.

+ +

이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report, 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요.

+ +
+ +
제한사항
+ + + +
+ +
입출력 예
+ + + + + + + + + + + + + + + + + + + + + +
id_listreportkresult
["muzi", "frodo", "apeach", "neo"]["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]2[2,1,1,0]
["con", "ryan"]["ryan con", "ryan con", "ryan con", "ryan con"]3[0,0]
+
+ +
입출력 예 설명
+ +

입출력 예 #1

+ +

문제의 예시와 같습니다.

+ +

입출력 예 #2

+ +

"ryan"이 "con"을 4번 신고했으나, 주어진 조건에 따라 한 유저가 같은 유저를 여러 번 신고한 경우는 신고 횟수 1회로 처리합니다. 따라서 "con"은 1회 신고당했습니다. 3번 이상 신고당한 이용자는 없으며, "con"과 "ryan"은 결과 메일을 받지 않습니다. 따라서 [0, 0]을 return 합니다.

+ +
+ +
제한시간 안내
+ + + + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git a/프로그래머스/1/92334. 신고 결과 받기/신고 결과 받기.py b/프로그래머스/1/92334. 신고 결과 받기/신고 결과 받기.py new file mode 100644 index 0000000..d541a8f --- /dev/null +++ b/프로그래머스/1/92334. 신고 결과 받기/신고 결과 받기.py @@ -0,0 +1,28 @@ +from collections import defaultdict + +def solution(id_list, report, k): + answer = [] + user_dict = defaultdict(str) + reported_name = defaultdict(int) + finish_user = set() + for name in report: + user, report_user = name.split() + if user not in user_dict: + user_dict[user] = set() + reported_name[user] = 0 + user_dict[user].add(report_user) + for user_name in user_dict: + for user in user_dict[user_name]: + reported_name[user] = reported_name[user] + 1 + if (reported_name[user] >= k): + finish_user.add(user) + + for k in id_list: + num = 0 + for j in user_dict[k]: + if j in finish_user: + num+=1 + answer.append(num) + + + return answer \ No newline at end of file