본문 바로가기
Python/코테 연습

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

by soojitasan 2024. 8. 19. 18:18
## 🔒 문제. 신고 결과 받기
def solution(id_list, report, k):
    answer = []

    ## report 중복 신고 제거 ..
    report = list(set(report))

    ## 신고 현황 정리
    #### 신고한 사람 기준 ... 딕셔너리 - key:신고 한 사람, value:신고 받은 사람
    report_give_dict = { i:[] for i in id_list }
    for r1 in report:
        if r1.split(" ")[0] in report_give_dict:
            report_give_dict[r1.split(" ")[0]].append(r1.split(" ")[1])

    #### 신고당한 사람 기준 ... 딕셔너리 - key:신고 받은 사람, value:신고 한 사람
    report_take_dict = { i:[] for i in id_list }
    for r2 in report:
        if r2.split(" ")[1] in report_take_dict:
            report_take_dict[r2.split(" ")[1]].append(r2.split(" ")[0])

    ## key별 value값이 k 이상인 사람 저장 (블랙리스트 대상자)
    black = [key for key, val in report_take_dict.items() if len(val) >= k]

    ## key별 value값에 블랙리스트를 보유한 카운트 저장
    report_email_cnt = {i:int() for i in id_list}

    for k, v in report_give_dict.items():
        for b in black:
            if b in v:
                report_email_cnt[k] += 1

    answer = [v for k, v in report_email_cnt.items()]

    return answer

## print(solution(["muzi", "frodo", "apeach", "neo"], ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"], 2))
## print(solution(["con", "ryan"], ["ryan con", "ryan con", "ryan con", "ryan con"], 3))