티스토리 뷰

728x90

 

https://programmers.co.kr/learn/courses/30/lessons/92334

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

 

  • 해설:

2021년 카카오 블라인드 채용 1차 코딩테스트 1번 문제입니다.

user의 id들과 신고자의 id, 피신고자의 id가 주어졌을 때 k번 이상 신고당한 피신고자를 신고한 사람에게 전송되는 처리결과메일의 횟수를 세는 문제입니다.

 

 

 

  • 풀이:

신고를 한 횟수를 카운팅하기 위한 dict 한 개와, 신고를 당한 횟수를 카운팅하기 위한 dict 한 개, 총 두 개를 사용하였습니다.

두 dict를 모두 초기화시켜주고 report의 내역에 따라 피신고 횟수를 카운팅하는 dict를 체크해주었습니다. 여기서 중복신고를 카운팅하지 않기 위해 set 자료구조를 사용하여 중복을 제거해 주었습니다.

마지막에 피신고횟수를 카운팅하는 dict에서 set의 길이가 k 이상인 key를 통해 answer[key]를 1씩 카운트해주었습니다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(id_list, report, k):
    answer = dict()
    check_list = dict()
    for i in id_list:
        answer[i] = 0
        check_list[i] = set()
    for s in report:
        f,t = s.split()
        check_list[t].add(f)
    for i in check_list:
        if len(check_list[i]) >= k:
            for j in check_list[i]:
                answer[j] += 1
    return [answer[i] for i in answer]
cs

 

 

 

320x100
댓글
© 2022 WonSeok, All rights reserved