카카오 - 신고 결과 받기
문제소개
- 게시판 불량이용자로 k번 이상 신고되면 이용정지됨
- 신고한 사람에게 처리결과를 통보하는 시스템을 작성하시오.
- 한 유저가 동일 유저를 여러번 신고하면 1회로 처리됨.
- 유저가 신고한 모드 내용을 취함하여 한꺼번에 이용정지 처리하고 결과 메일을 발송함.
입출력 예시
- id_list: 유저목록
- report : "신고한사람 신고받은사람" 으로 구성
- k번 신고당하면 이용정지
- result : 유저별 처리결과 메일 받는 횟수
**이 문제에서 정답(answer)으로 반환되는 리스트**
코드
# 각 유저별 처리결과 메일을 받은 횟수를 배열에 담는 함수 작성
from collections import defaultdict
# 디폴트 값을 지정해줄수 있는 defaultdict
# 키(id)의 개수를 세거나 리스트나 셋의 항목을 정리할 때 활용됨
def solution(id_list, report, k):
answer = []
report_accept = defaultdict(set) # id가 신고받은 목록 (set 중복제거)
report_throw = defaultdict(set) # id가 신고한 목록
for r in report:
throw, accept = r.split(' ') # 신고한 사람, 받은사람
report_accept[accept].add(throw) # accept가 신고받은 목록에 throw 추가
report_throw[throw].add(accept) # throw가 신고한 목록에 accept 추가
for _id in id_list:
cnt = 0
for r_throw in report_throw[_id]: # _id가 신고한 아이디를 가져옴(r_throw)
if len(report_accept[r_throw]) >= k:
cnt += 1
answer.append(cnt)
return answer
리팩토링
def solution(id_list, report, k):
answer = [0] * len(id_list)
accept_count = {x : 0 for x in id_list}
for r in set(report):
accept_count[r.split()[1]] += 1
for r in set(report):
# 신고받은 횟수가 K보다 크면, 신고한 사람에게 통보횟수 1 증가
if accept_count[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
정의된 변수 확인
id_list = ["muzi", "frodo", "apeach", "neo"]
accept_count = {x : 0 for x in id_list}
accept_count
{'muzi': 0, 'frodo': 0, 'apeach': 0, 'neo': 0}
Author And Source
이 문제에 관하여(카카오 - 신고 결과 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wltn39/카카오-신고-결과-받기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)