https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
from collections import defaultdict
def solution(id_list, reports, k):
reported = dict()
for report in reports:
x, y = report.split(' ')
if not reported.get(y):
reported[y] = set([x])
else:
reported[y].add(x)
result = defaultdict(int)
for id in id_list:
if reported.get(id) and len(reported[id]) >= k:
for x in reported[id]:
result[x] += 1
answer = [0] * len(id_list)
for i, id in enumerate(id_list):
answer[i] = result[id]
return answer
해시
1. 신고리스트 reports를 딕셔너리로 관리를 한다. ( key : 신고 받은사람, value : 신고한 사람들의 집합)
- 딕셔너리 내부에는 집합 set()을 이용해서 중복값을 제거한다.
2. 특정 인물을 신고한 사람들이 k명 이상이면 해당 집합의 사람들에게 모두 메일을 한통씩 보낸다.
- len(reported[id]) : id를 신고한 사람들의 수
- defaultdict를 이용해서 result 딕셔너리 관리 ( key: 사람, value: 메일을 받은 횟수)
3. 각각 모든 사람들 마다 answer에 메일을 받은 횟수만큼 초기화
- 주어진 id_list순서대로 리스트를 만들기 위해서
4. return answer
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv1 - 신규 아이디 추천 (파이썬) (0) | 2022.03.16 |
---|---|
[프로그래머스] Lv1 - 로또의 최고 순위와 최저 순위 (파이썬) (0) | 2022.03.15 |
[프로그래머스] - 블록게임 (파이썬) (0) | 2022.02.15 |
[프로그래머스] - 매칭점수 (파이썬) (0) | 2022.02.15 |
[프로그래머스] - 길 찾기 게임 (파이썬) (0) | 2022.02.15 |