PS/프로그래머스

[Python] 신고 결과 받기

s_omi 2024. 11. 2. 10:49

✏️ 문제

 

문제 파악

매치하기 힘들 때는 손으로 적어가면서 정리하는 게 훨씬 잘된다! 

id 딕셔너리에는 { 유저 ID : [유저가 신고한 ID] } 를 주었고 

stop 딕셔너리에는 { 유저 ID : 신고당한 횟수 } 를 주어서 

신고당한 횟수가 k 이상이면 id 딕셔너리와 매치해서 인덱스 값을 결과 배열에 추가했다.

 

 

코드

def solution(id_list, report, k):
    answer = [0] * len(id_list)
    id = {}
    stop = {}
    
    for i in id_list:
        id[i] = []
        stop[i] = 0
        
    for r in report:
        s, e = r.split(' ')
        
        if e not in id[s]:
            id[s].append(e)
            stop[e] += 1
    
    for st in stop:
        if stop[st] >= k:
            for idx, i in enumerate(id): 
                if st in id[i]:
                    answer[idx] += 1
                
    return answer
  • 다른 사람의 풀이
def solution(id_list, report, k):
    answer = [0] * len(id_list)    
    id = {x : 0 for x in id_list}

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

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

    return answer

 

중복되면 신고를 1회만 처리되는데 set으로 처리하셨다!....진짜 코드가 어떻게 이렇게 짧을 수 있지 ......🥲

'PS > 프로그래머스' 카테고리의 다른 글

[Python] 가장 많이 받은 선물  (0) 2024.11.03
[Python] 성격 유형 검사하기  (0) 2024.11.03
[Python] 1번 / 동영상 재생기  (0) 2024.11.02
[Python] 개인정보 수집 유효기간  (1) 2024.11.02
[Python] 10번 / 공원  (0) 2024.11.02