일일구름 IT

프로그래머스 lv.1 [신고 결과 받기] 2022 KAKAO BLIND RECRUITMENT 본문

프로그래머스/프로그래머스 lv.1

프로그래머스 lv.1 [신고 결과 받기] 2022 KAKAO BLIND RECRUITMENT

일구름 2022. 7. 5. 00:19

문제설명

신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.

  • 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
    • 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
    • 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
  • k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
    • 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.

 

 

문제풀이

# 신고 결과 받기

import numpy as np
def solution(id_list, report, k):
    answer = [0]*len(id_list)
    user =  [[0] * len(id_list) for i in range(len(id_list))]
    check_list = [0]*len(id_list)
    
    for i in range(0,len(report)):
        a = report[i].split()
        user[id_list.index(a[0])][id_list.index(a[1])] = 1

    for i in range(0, len(id_list)):
        for j in range(0, len(id_list)):
            check_list[i] += user[j][i]
            if check_list[i] >= k:
                for o in range(0, len(id_list)):
                    if user[o][i] == 1:
                        answer[o] += 1
                break        

    #print(answer)
    return answer

#id_list = ["con", "ryan"]
#report = ["ryan con", "ryan con", "ryan con", "ryan con"]

id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]

solution(id_list, report, 2)
  • user[신고한 자][신고 받은 자] 2차 list 생성
  • check_list를 만들어 신고 받은 횟수를 넣음
  • 똑같은 유저가 한 유저를 계속 신고하여도 1회로 인정 → 중복을 제거하는 것이 중요하다고 생각함
  • 따라서 몇 번을 신고해도 중복이 안되도록 user list에 +=1이 아닌 =1을 해줌.

 

다른 사람의 풀이:

def solution(id_list, report, k):
    answer = [0] * len(id_list)    
    reports = {x : 0 for x in id_list}

    for r in set(report):
        reports[r.split()[1]] += 1

    for r in set(report):
        if reports[r.split()[1]] >= k:
            answer[id_list.index(r.split()[0])] += 1

    return answer
  • {x: 0 for x in list}
  • set()을 이용해 report 리스트에 중복되는 요소를 제거해줌

 

구글링한 것

[[0] * len(id_list) for i in range(len(id_list))]

 

https://loud-scorpion-36f.notion.site/dbb443db89c04038ae64b9401ee43cc7

 

신고 결과 받기

문제 설명

loud-scorpion-36f.notion.site