와이유스토리

[문자열] 프로그래머스 신고 결과 받기 Python 본문

코딩테스트/문자열

[문자열] 프로그래머스 신고 결과 받기 Python

유(YOO) 2022. 2. 2. 22:00

 

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

 

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

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

programmers.co.kr

def solution(id_list, report, k):
    answer = []
    black_list = [] # 금지 아이디 목록
    stop = {} # 아이디별 신고 횟수
    cnt = {} # 아이디별 신고한 아이디들
    
    for id in id_list:
        stop[id] = 0;
        cnt[id] = []
    
    for r in report:
        temp = r.split(' ')
        if temp[1] not in cnt[temp[0]]:
            cnt[temp[0]].append(temp[1])
            stop[temp[1]] += 1;
        if stop[temp[1]] >= k:
            if temp[1] not in black_list:
                black_list.append(temp[1])

    for id in id_list:
        temp = 0
        for b in black_list:
            if b in cnt[id]:
                temp += 1
        answer.append(temp)
    
    return answer

 

※ 다른 사람들 풀이 참고 후 수정 코드

def solution(id_list, report, k):
    answer = [0] * len(id_list) # 배열 길이 사용
    stop = {x : 0 for x in id_list} # 초기화
    
    for r in set(report): # 중복 제거 조심
        stop[r.split()[1]] += 1;
    
    for r in set(report):
        if stop[r.split()[1]] >= k:
            answer[id_list.index(r.split()[0])] += 1 # 값으로 인덱스 접근
    
    return answer
Comments