반응형
출처
https://programmers.co.kr/learn/courses/30/lessons/92334
문제
제한사항
풀이 및 코드
문제 조건대로 따라 구현만 하면 되는 문제이다.
신고를 1회도 하지 않은 유저 정보도 기록하기 위해 defaultdict를 사용하였다.
- 동일한 유저에 대한 신고는 1회만 가능하므로, set을 사용해 동일 유저에 대한 중복 신고를 제거
- 신고 기록이 전혀 없는 유저 정보도 기록하기 위해 reporterDict의 key를 유저 아이디로 초기화
- 신고 기록에 따라 신고 기록을 reporterDict에, 신고당한 횟수를 targetDict에 기록
- 신고당한 횟수가 k번 이상인 유저ID를 bannedUser에 삽입
- reporterDict와 bannedUser를 list comprehension하여 카운트
from collections import defaultdict
def solution(id_list, report, k):
report = list(set(report)) // report의 중복 제거
reporterDict = defaultdict(list)
targetDict = defaultdict(int)
for userId in id_list:
reporterDict[userId]
for r in report:
reporter, target = r.split()
reporterDict[reporter].append(target)
targetDict[target] += 1
bannedUser = []
for user, count in targetDict.items():
if count >= k:
bannedUser.append(user)
answer = []
for i in reporterDict.values():
answer.append(len([x for x in i if x in bannedUser]))
return answer
'기술 > Problem Solving' 카테고리의 다른 글
[Programmers] k진수에서 소수 개수 구하기 (0) | 2022.01.17 |
---|---|
[Programmers] 주차 요금 계산 (0) | 2022.01.17 |
[baekjoon] 4900번 7 더하기 (0) | 2021.07.27 |
[baekjoon] 1263번 시간 관리 (0) | 2021.07.23 |
[baekjoon] 1706번 크로스워드 (0) | 2021.07.17 |