신고 결과 받기

호랑·2022년 5월 26일
0

코딩 테스트 공부

목록 보기
2/3

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

def solution(id_list, report, k):
    answer = []
    receive = {} #신고 받은 사람이 key
    send = {} # 신고 한 사람이 key
    ban = [] #정지당한 유저 리스트
    for reported in report:
        er = reported.split()[0] #신고 한 사람 
        ed = reported.split()[1] #신고 받은 사람
        #신고 받은 사람이 key인 딕셔너리 제작
        l = receive.get(ed,[])
        l.append(er)
        receive[ed] = list(set(l)) # 중복제거
        #신고 한 사람이 key인 딕셔너리 제작
        li = send.get(er,[])
        li.append(ed)
        send[er] = list(set(li))
        
    for ed in receive:
        if len(receive[ed]) >=k:
            ban.append(ed)
    for id in id_list:
        temp = 0
        for b in ban:
            if b in send.get(id,[]):
                temp += 1    
        answer.append(temp)    
    
    return answer

알게 된 것 :

dict.get(a,b)

dict 딕셔너리에 key값 a가 있으면 해당 value를 반환하고, 없으면 b를 반환

list(set(중복제거할 변수))

중복 제거하는 방법!

num_list = [1,2,3,4,5]

num1, num2, num3, num4, num5 = num_list

리스트 len에 맞게 변수를 할당해 주면 unpacking이 된다.

num1, *num2 = num_list

*을 앞에 붙이면 num1을 제외하고 전부 가져오라는 뜻이 됨. 즉,
num1 = 1
num2 = [2,3,4,5]

num1, *num2, num3 = num_list

하면 첫번째 거, 마지막 거 제외하고 가져오게 됨. 즉,

num1 = 1
num2 = [2,3,4]
num3 = 5

가 됨!

profile
데이터리터러시 기획자 / 데이터 분석가가 꿈!

0개의 댓글