https://school.programmers.co.kr/learn/courses/30/lessons/42579

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(genres, plays):
    # key: 장르 , value: (곡의 index, play수)인 딕셔너리
    genere_dic = {}
    for i, g in enumerate(genres) : 
        if g not in genere_dic : genere_dic[g] = [(i, plays[i])] #index, play수
        else : genere_dic[g].append((i, plays[i])) #index, play수
            
    # 각 키 내에서 조건 2, 조건 3에 따라 정렬
    for genre, values in genere_dic.items():
        genere_dic[genre] = sorted(values, key=lambda x: (x[1], -x[0]), reverse=True)
        
    # 조건 1에 따라 키 정렬
    sorted_genere = sorted(genere_dic.items(), key=lambda x: sum(v[1] for v in x[1]), reverse=True)
    sorted_genere = dict(sorted_genere)
    
    # 결과 list로 정리 
    res = []
    for key, val in sorted_genere.items() : 
        if len(val) < 2 : 
            res.append(val[0][0])
        else : 
            res.append(val[0][0])
            res.append(val[1][0])
        
    return res

+ Recent posts