[python][프로그래머스] 신고 결과 받기

202h·2022년 4월 3일
2

코딩테스트

목록 보기
2/2

➡️ 문제

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

아이디어 정리

  1. 유저는 동일한 유저를 한 번씩만 신고할 수 있기 때문에 report 를 set() 으로 변환해준다.
  2. report 를 공백을 구분자로 split 해준다.
  3. 반복문을 돌면서 check 딕셔너리에 어떤 유저가 몇 번 신고당했는지 저장한다.
  4. 반복문을 돌면서 신고한 유저와 신고당한 유저를 lst 딕셔너리에 저장한다.
  5. check 딕셔너리를 돌면서 신고당한 횟수가 k 번 이상인 유저들을 체크한다.
  6. 해당 유저를 신고한 유저들이 받아야 할 메시지 개수를 + 1 해준다.

✅ 코드

첫 시도

def solution(id_list, report, k):
    answer = [0] * len(id_list)
    report = set(report)
    lst = {}
    check = {}
    
    for s in report:
        a, b = s.split(' ') 
        
        if b not in check:
            check[b] = 1
        else:
            check[b] += 1
            
        if a not in lst:
            lst[a] = [b]
        else:
            if b not in lst[a]:
                lst[a] += [b]

    for id_, n  in check.items():
        if n >= k:
            for user, user2 in lst.items():
                if id_ in user2:
                    answer[id_list.index(user)] += 1

    return answer

통과하였지만 좀 더 간결하게 만들고 싶다.

0개의 댓글