😁 빅데이터 문제 풀기 & Study/- Programmers 문제

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

또방91 2022. 1. 22. 00:22
728x90

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

 

 

 

 

 

 

 

 

        2022 KAKAO BLIND RECRUITMENT 신고 결과 받기       

 

 

 

 

✏️ 문제 링크

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

 

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

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

programmers.co.kr

 

 

# 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

#서로다른 유저 신고 가능, 여러번해도 1회 처리
#k번이상 신고유저 메일로 발송, 신고내용 취합해서 메일발송
#출력: 신고처리 완료 메일 받은 횟수 출력

# def solution(id_list, report, k):
#     answer = []
#     return answer

 

 정답은 ??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def solution(id_list, report, k):
    set_report = set(report)
    cnt_list = []  # 신고 당한 사람
 
    for i in set_report:
        a, b = i.split()
        cnt_list.append(b)
 
    val_zero = [0* len(id_list)
    #aa는 신고받은 횟수 딕셔너리
    aa = dict(zip(id_list, val_zero))
 
    for i in cnt_list:
        if aa[i] == 0: aa[i] = 1
        else: aa[i] += 1
 
    singo = [] #k번 이상 정지된 
    for i in list(aa.keys()):
        if aa[i] >= k: singo.append(i)
 
    #bb는 메일받은 횟수 딕셔너리
    bb = dict(zip(id_list, val_zero))
    for i in set_report:
        a, b = i.split()
        if b in singo: bb[a] += 1
 
    answer = list(bb.values())
    return answer
cs

 

 

 

다른 사람들이 한 코드식이 보니... 와... 컴프리헨션을 이렇게 써야하는구나 깨달은 상황이었다ㅠㅠ

맞다! 이렇게 딕셔너리로 쓸수 있었찌!!! 느꼈ㄸㅏ....

 

🖱️ 다른 분들의 코드 ??

1
2
3
4
5
6
7
8
9
10
11
12
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
cs

 

 

 

역시나 줄길이부터가 다르다.ㅠㅠㅠㅠ 나도 이렇게 발전 할 수 있겟찌?? 😗

화이팅!!

 

 

 

 

 

728x90