본문 바로가기
Coding Test/Python

[프로그래머스] 신고 결과 받기 Python code

by giem 2022. 7. 16.
반응형

문제 설명

문제 설명

 

예시

예시

 

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를 리턴한다.

반응형

댓글