[프로그래머스 Lv1] 신고 결과 받기 (파이썬)

Jewon Joel Park·2022년 5월 27일
0

Programmers-solution

목록 보기
3/34

문제 링크


문제 설명

유저 목록과 유저가 신고한 ID, 정치처리 기준횟수를 입력받아, 특정 횟수 이상 신고당한 사용자를 정지 처리하여 이를 신고한 유저별로 정지시킨 횟수를 반환하는 함수 작성


풀이 코드

def solution(id_list, report, k):
    ban_record = [0] * len(id_list)
    reported_user = {user: 0 for user in id_list}

    report = set(report)

    for item in report:
      reported_user[item.split()[1]] += 1

    for item in report:
      if reported_user[item.split()[1]] >= k:
        ban_record[id_list.index(item.split()[0])] += 1
        
    return ban_record

코드 설명

  1. 신고자별 정지처리 결과를 저장할 ban_record 변수에 id_list의 길이만큼 초기값 0을 저장
  2. 유저별 신고받은 횟수를 저장하기 위한 dict타입 객체를 생성하고, {사용자: 횟수} 형식으로 초기화 및 선언
  3. 같은 사용자가 동일한 대상을 여러번 신고한 경우는 1회만 적용된다는 조건에 따라, 이를 제거하기 위해 set타입으로 변환
  4. 모든 신고건에 대하여 dict타입 객체 reported_user에서 피신고자를 키값으로 찾아 횟수에 1을 더함
  5. 4번 처리를 마친 후 별개의 for Loop으로 피신고자별 신고 횟수(reported_user)가 k번 이상일 경우 정지 처리 결과(ban_record)에 1을 더함. 이 때 입력받은 id_list와 동일한 인덱스에 값이 저장되어야 하므로 ban_record 인덱스 값에 정지처리 된 유저의 id를 id_list에서 찾아 부여함.
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글