(문제 설명)
신입사원인 무인양품은 나쁜 게시판 사용자를 신고하고 수정 결과를 이메일로 보내는 시스템을 개발하려고 합니다. Muji가 개발하려는 시스템은 다음과 같습니다.
- 각 사용자는 한 번에 한 명의 사용자를 신고할 수 있습니다.
- 보고서 수는 무제한입니다. 여전히 다른 사용자를 신고할 수 있습니다.
- 사용자를 여러 번 신고할 수 있지만 동일한 사용자에 대한 신고는 한 번만 집계됩니다.
- k회 이상 신고된 사용자는 게시판 이용이 금지되며, 신고한 모든 사용자에게 이메일이 발송됩니다.
- 이용자가 신고한 모든 콘텐츠를 수집하여 마지막에 이용정지 메일을 발송하며, 게시판 이용을 즉시 중단합니다.
(카누 코드)
import itertools
def solution(id_list, report, k):
report = list(set(report)) #중복 제거
bad = ()
good = ()
for i in report:
re = i.split(" ")
bad.append(re(1))
good.append(re(0))
fin_report = (() for i in range(len(id_list)))
for i in range(len(bad)):
fin_report(id_list.index(bad(i))).append(good(i))
for i in range(len(fin_report)):
if len(fin_report(i))<k:
fin_report(i) = ()
fin_list=list(itertools.chain(*fin_report)) # 중첩 리스트 풀기
answer = (fin_list.count(i) for i in id_list)
return answer
(다른 코드)
def solution(id_list, report, k):
answer = (0) * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports(r.split()(1)) += 1
for r in set(report):
if reports(r.split()(1)) >= k:
answer(id_list.index(r.split()(0))) += 1
return answer
1. id_list 길이만큼 항목이 0개인 목록 응답을 생성합니다.
2. id_list의 요소로 키를 사용하고 값을 0으로 사용하여 사전을 만듭니다.
3. 보고서에 문장을 삽입하여 중복을 제거한 후 사전 값을 업데이트하여 각 탐지기가 몇 번 보고되었는지 확인합니다.
4. 값이 k보다 크면 해당 id(응답)의 값을 1씩 증가
5. 회신
사전을 사용하는 것은 간단하고 깨끗한 솔루션입니다
여러 값을 인덱싱하고 참조해야 하는 경우 사전을 사용하여 해결하는 습관을 들이십시오.
![청년 버팀목 전세자금 대출 리뷰, 임대차계약부터 전입신고까지 해본 이야기 [혼자 사는 일기] 청년 버팀목 전세자금 대출 리뷰, 임대차계약부터 전입신고까지 해본 이야기 [혼자 사는 일기]](https://boss.ictedu.kr/wp-content/plugins/contextual-related-posts/default.png)