신고 결과 받기

Polla·2023년 2월 20일
0

programmers

목록 보기
47/58
post-thumbnail

프로그래머스 lv1 신고 결과 받기 파이썬



💡 문제


이용자의 ID가 담긴 문자열 배열 id_list,
각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report,
정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때,
각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록
solution 함수를 완성해주세요.


🥳 해결


생각

1. for문으로 dictionary id_list 완성하기
2. 신고당한 횟수를 센 후 기존의 list 와 비교하기
3. set로 중복 회피

로 생각했고, 사실 하나의 dictionary로 완성하고 싶었으나,
실패했다..🥲🥲 다른 분이 푸신 방법을 봤는데 그래도 내 힘으로 풀자 싶어서 다시 내가 하고 싶던 방향으로 풀었다.


def solution(id_list, report, k):
    result = [0] * len(id_list)
    id_dict = {}
    sam_dict = {}
    
    for i in id_list:
        id_dict[i] = 0 # id_list 딕셔너리
        sam_dict[i] = []
    
    for j in set(report):
        j = j.split() 
        id_dict[j[1]] += 1 # 신고 당한 횟수 세기
        sam_dict[j[0]].append(j[1])
    
    for x,y in id_dict.items():
        if y >= k: # 신고 횟수가 k개 이상인 경우
            for i,j in sam_dict.items():
                if x in j:
                    result[id_list.index(i)] += 1 
                    # k개 이상인 원소를 가진 id_list +1  
    return result

그래도 어떻게.. 기존의 방식으로 풀긴 했다.
사실 split()만 아니었으면 쉽게 풀릴 문제였는데, 문자열이 묶여있어서 힘들었던 문제 같다 ㅜ

나는 신고 당한 횟수 즉 id_dict에서 k개가 넘는 경우의 회원
sam_dict에서 찾아서,
id_list.index(i) 를 통해서 해당 아이디에 +1 해주도록 했다.
중복은 set() 사용해서 미리 없애줬다.

다른 분은 sam_dict에 반대로 신고 당한 사람을 기준으로 정렬해서
하나의 dictionary로 완성했다...

왜 이생각을 못했지...🥲


그래도... 점차 늘어가는 것 같다..	
뭘 써야 할지 모르던 때랑 비교해서 그래도 뭘 써야 할지는 바로 잡으니...
이제 LV2도 곁들여서 풀어야 겠다.... 
profile
트러블 슈팅 Blog => https://polla.palms.blog/home

0개의 댓글