2022 KAKAO BLIND RECRUITMENT 문제
https://school.programmers.co.kr/learn/courses/30/lessons/92334
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아이디어
id_list를 돌면서 id들을 key로 갖고 value에는 그 사람이 신고한 사람들이 list로 들어가게끔 코드를 짜고 싶었는데
이게 오래 걸렸다.
1) 중복 신고를 제거한 list
2) user별로 신고한 id를 저장하는 dictionary
3) user별로 신고당한 횟수 저장하는 dictionary
defaultdict를 쓰기 위해 라이브러리도 import 해줘야 한다.
코드
from collections import defaultdict
def solution(id_list, report, k):
answer = []
# 신고 중복 제거한 List
report = list(set(report))
# user별로 누구를 신고했는지 dictionary
user = defaultdict(set)
# user별로 몇 번 신고당했는지 dictionary
cnt = defaultdict(int) # default 0으로 세팅
# b는 a가 신고한 사람
for couple in report:
a, b = couple.split()
user[a].add(b)
cnt[b] += 1
# 모든 유저를 돌면서 그 유저가 신고한 다른 유저가 신고 당한 횟수가 k 이상인지 체크
for id in id_list:
result = 0
for u in user[id]:
if cnt[u] >= k:
result += 1
answer.append(result)
return answer
'Algorithm > 알고리즘 문제' 카테고리의 다른 글
[프로그래머스][Python] 개인정보 수집 유효기간 (1) | 2023.10.08 |
---|---|
[프로그래머스][Python] 달리기 경주 (0) | 2023.10.08 |
[프로그래머스][Python] 컨트롤 제트 (0) | 2023.10.05 |
[프로그래머스][Python] 한 번만 등장한 문자 (0) | 2023.10.05 |
[백준/BOJ][Python] 9095번 1, 2, 3 더하기 (1) | 2023.10.02 |