반응형
문제 설명
예시
Input, Output 설명
code
구현은 아래와 같이 했다. answer의 배열은 id_list의 길이와 같기 때문에 0으로 모두 초기화해준다.
그 후 set으로 report의 중복을 제거한다.
for문으로 report를 돌며 각 원소를 split 해서
신고한 id(0번째 index)와 신고받은 id(1번째 index)로 나눈다.
그 후 신고받은 id의 count를 증가시킨다.
이렇게 {신고받은 id : 횟수}의 dict가 만들어졌다면
이 dict를 다시 돌며 신고받은 횟수가 k가 넘으면 신고한 사람에게 메일을 보낸 의미로
id_list의 index를 참고하여 answer의 index count를 증가시킨다.
from collections import defaultdict
def solution(id_list, report, k):
answer = [0] * len(id_list) #초기화
reports = defaultdict(int)
report = set(report) #중복 제거
for x in report:
reports[x.split()[1]] += 1 #신고 count 증가
for r in report:
if reports[r.split()[1]] >= k: #신고횟수가 k이상이면
answer[id_list.index(r.split()[0])] += 1 #신고한 사람 메일 count 증가
return answer
주요 기능
type
defaultdict : dict와 비슷하지만 지정되지 않은 키는 default 값 0으로 초기화됨
set : list와 비슷하지만 중복된 값이 있을 수 없다.
method
split : 문자열을 나누어 배열로 리턴한다. 기본적으로 띄어쓰기나 엔터로 나눈다.
index : 리스트에 파라미터로 넘겨준 값이 있으면 그 index를 리턴한다.
반응형
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스] 내적 Python Code (0) | 2022.07.29 |
---|---|
[프로그래머스] 폰켓몬 Python 3 Code (2) | 2022.07.29 |
[프로그래머스] 음양 더하기 Python3 code (0) | 2022.07.29 |
[Codility Challenge] Jurassic Code Python 풀이 (4) | 2022.07.22 |
[Python] 피보나치 수열 구현 (fibonacci sequence) (0) | 2022.05.26 |
댓글