신고 결과 받기

박고은·2023년 3월 22일
1

코딩테스트 연습

목록 보기
4/34

def solution(id_list, report, k):
    m_id, m_count = [], dict(zip(id_list,[0]*len(id_list)))
    report = list(map(lambda x: x.split(" "), list(set(report))))
    r_id = [id[1] for id in report]
    r_count = dict(zip(id_list,[0]*len(id_list)))
    
    for id in r_id:
        r_count[id] += 1
    
    for key, value in r_count.items():
        if value >= k: m_id.append(key)
        
    for id in report:
        if id[1] in m_id:
            m_count[id[0]] += 1
            
    answer = list(m_count.values())
    
    return answer




+ 다른 풀이

def solution(id_list, report, k):
    report = list(map(lambda x: x.split(" "), list(set(report))))
    r_count = dict.fromkeys(id_list, 0)
    r_id = dict(zip(id_list, [[] for i in id_list]))
    answer = [0 for i in range(len(id_list))]
    
    for id in report:
        r_count[id[1]] += 1
        r_id[id[1]].append(id[0])
        
    for key, value in r_id.items():
        if r_count[key]>=k:
            for i in value:
                answer[id_list.index(i)] += 1
    
    return answer

fromkeys(keys, value): 딕셔너리 value 초기화
빈 배열로 초기화하게 되면 append에서 value 전체가 하나의 빈 배열로 취급하는 것 같음 -> zip 활용 필요
딕셔너리 하나 줄이고 index를 반환해서 answer에 바로 저장(그러나 성능이 떨어지는 듯)

0개의 댓글