프로그래머스. 베스트앨범 파이썬 풀이

minan·2021년 7월 1일
0

프로그래머스

목록 보기
86/92

프로그래머스. Level 3. 베스트앨범 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/42579

from collections import defaultdict

def solution(genres, plays):
    answer = []
    
    # 장르의 재생시간을 저장하기 위해 defaultdic 사용
    # 굳이 defaultdict을 사용할 필요는 없다
    dic = defaultdict(int)
    
    # 장르, 재생시간, 고유번호를 저장할 배열
    array = []
    
    for i in range(len(genres)):
        # 장르의 재생시간을 더해준다
        dic[genres[i]] += plays[i]
        # array 배열에 [장르, 재생시간, 고유번호]를 저장
        array.append([genres[i], plays[i], i])
        
    # 장르의 재생시간을 기준으로 내림차순으로 정렬
    sdic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
    # [장르, 재생시간, 고유번호가] 들어있는 배열을 정렬
    array = sorted(array, key=lambda x : (x[0], -x[1], x[2]))
    
    for i in range(len(sdic)):
        # 최대 두개씩만 앨범에 들어갈 수 있으니 카운트
        count = 2
        for j in range(len(array)):
            if sdic[i][0] == array[j][0] and count != 0:
                answer.append(array[j][2])
                count -= 1
    
    return answer
profile
https://github.com/minhaaan

0개의 댓글