728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/92334
중복된 신고 제외 k번 이상 신고된 사용자를 '신고한 사람'에게 메일 전송한 값을 리턴
set() 사용
report를 set()를 이용하여 중복 요소 제거
report를 split()하여 신고한 사람(리스트[0])과 신고 당한 사람(리스트[1])을 나눈다 -> ["신고자 id1", "신고당한자 id1"]
2차원 배열 report 예시) [['frodo', 'neo'], ['apeach', 'frodo'], ['muzi', 'frodo'], ['muzi', 'neo'], ['apeach', 'muzi']]
#이용자 아이디/이용자 아이디 신고한 아이디/신고횟수
def solution(id_list, report, k):
report = set(report)
report = [r.split() for r in report]
딕셔너리 사용
신고당한 사람을 key로 딕셔너리 생성
value는 신고자의 id 인덱스
예시) {'frodo': [2, 0], 'muzi': [2], 'neo': [1, 0]}
dic = {}
for r in report:
if r[1] in dic:
dic[r[1]].append(id_list.index(r[0]))
else:
dic[r[1]] = [id_list.index(r[0])]
answer에 len(id_list)만큼의 배열을 만들어준다
딕셔너리를 순회하면서 len(dic[key])이 k 이상이면
신고자 인덱스에 +1씩
answer = [0] * len(id_list)
for key in dic:
if len(dic[key]) >= k:
for i in (dic[key]):
answer[i] += 1
return answer
'코딩테스트 문제' 카테고리의 다른 글
[프로그래머스/Python] 숫자 짝궁 (0) | 2024.01.11 |
---|---|
[프로그래머스/Python] 시저 암호 (0) | 2024.01.11 |
[프로그래머스/Python] 둘만의 암호 (0) | 2024.01.10 |
[프로그래머스/Python] 문자열 밀기 (0) | 2024.01.05 |
[프로그래머스/Python] k의 개수 (0) | 2024.01.05 |