[파이썬/Python/프로그래머스] 신고 결과 받기

SooYeon Yeon·2022년 6월 15일
0

파이썬/알고리즘

목록 보기
22/35

신고 결과 받기

from collections import defaultdict
def solution(id_list, report, k):
    user_information = defaultdict(list)
    result = [0] * len(id_list)
    
    for report_inform in report:
        tmp_list = report_inform.split(' ')
        if tmp_list[0] not in user_information[tmp_list[1]]:
            user_information[tmp_list[1]].append(tmp_list[0])
    
    for i in id_list:
        if len(user_information[i]) >= k:
            for value in user_information[i]:
                result[id_list.index(value)] += 1
    return result

새로 사용한 기술

defaultdict를 이용했다.

딕셔너리에서 값인 리스트에 원소를 추가하기 위해 사용하였다.

from collections import defaultdict # import
user_information = defaultdict(list) # list를 값으로 하는 dict 생성
user_information['키값'].append('넣을 값') # 키 값에 해당하는 곳 리스트에 값을 추가

풀이

  1. report를 받아 key값은 userID로 하고 값은 리스트로 설정했다.
  2. 그 리스트 안에는 key값인 ID인 유저를 신고한 유저의 아이디를 목록에 넣는다.
  3. 단, 이미 리스트 안에 있는 유저는 중복해서 신고하지 못하므로 리스트에 없는 유저만 새로 추가한다.
  4. 유저 정보에서 값 리스트의 길이가 k 이상이면 그 리스트에 있는 사람들의 인덱스를 찾아서 해당 번쨰의 리스트에 +1을 해준다.

0개의 댓글