[Python] 2022 KAKAO BLIND RECRUITMENT : 신고 결과 받기

송진영·2022년 10월 2일
0

프로그래머스-python

목록 보기
6/22

2022 KAKAO BLIND RECRUITMENT : 신고 결과 받기

문제풀이

  1. split을 통해 문자열에서 유저 ID와 신고 ID를 구분하여야 한다.
    ex) a, b = "muzi frodo".split() -> a = "muzi", b = "frodo"
  2. 주어진 report를 list(set(report)) 작업을 통해서 중복 제거를 한다.
  3. 유저가 신고한 아이디를 defaultdict(set) 형태에 추가해준다.(중복된 값은 set에 의해 날라간다.)
    ex) user["muzi"].add("frodo")
  4. 신고 ID에 따른 신고 횟수를 defaultdict(int)에 1씩 추가해 준다.
    ex) cnt["frodo"] += 1
  5. 주어진 id_list(유저)가 신고한 ID의 신고 당한 횟수를 k와 비교하여 answer에 추가해준다.

from collections import defaultdict
def solution(id_list, report, k):
    answer = []
    report = list(set(report)) # 문제 풀이 2번
    user = defaultdict(set) # user[userID] = 신고 ID
    cnt = defaultdict(int) # cnt[신고 ID] = 신고 당한 횟수
문제 풀이 3, 4for r in report:
        a,b = r.split() # 문제 풀이 1번
        user[a].add(b)
        cnt[b] += 1
#  문제 풀이 5번
    for id in id_list:
        result = 0
        for x in user[id]:
            if cnt[x] >= k:
                result+=1
        answer.append(result)
    return answer
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글