728x90
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
코드 : (defaultdict 사용)
from collections import defaultdict
def solution(id_list, report, k):
answer = []
# 중복 신고 제거
report = list(set(report))
user = defaultdict(set)
cnt = defaultdict(int)
for r in report :
a,b = r.split()
user[a].add(b)
cnt[b]+=1
for i in id_list :
result = 0
for u in user[i] :
if cnt[u] >= k :
result += 1
answer.append(result)
return answer
dict만 사용한 풀이 :
def solution(id_list, report, k):
answer = []
reportDB = {x : [] for x in id_list}
cntDB = {x : 0 for x in id_list}
report = list(set(report))
for r in report :
a,b = r.split()
reportDB[a].append(b)
cntDB[b]+=1
for user in id_list :
tmp_cnt =0
for c in reportDB[user] :
if cntDB[c]>=k :
tmp_cnt+=1
answer.append(tmp_cnt)
return answer
defaultdict를 이용해서 한다는 것은 생각했는데 세부적인 내용들 구현이 부족했다.
중복 신고 제거를 list(set(report))로 한다는 것이 신박했다.
id_list를 돌면서 해당 아이디가 신고한 사람들을 돈다.
신고한 사람 중 k번 이상 신고당한 사람이 있다면 answer 에 append하는 것이다.
배운 점 :
1. defaultdict를 한문장으로 만들기
defaultdict를 사용하지않고 for문을 이용하여 만들 수 있다.
reportDB = {x : [] for x in id_list}
은
reportDB = defaultdict(list)와 동일하다.
참고 블로그 :
프로그래머스 - 신고 결과 받기[Python]
문제 설명신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.각 유저는 한 번에 한 명의
velog.io
복습 :
✅ 20220630
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]문자열 압축 (0) | 2022.06.28 |
---|---|
[Python/프로그래머스]신규아이디추천_구현 (0) | 2022.06.28 |
[Python/프로그래머스]순위_그래프 (0) | 2022.06.19 |
[Python/프로그래머스] 소수 찾기_완탐 (0) | 2022.06.19 |
[Python/프로그래머스]모의고사_완탐 (0) | 2022.06.19 |