프로그래머스 베스트 앨범

wook2·2021년 6월 29일
0

알고리즘

목록 보기
16/117

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

딕셔너리를 이용해 키-값의 관계를 이용할수 있는가를 물어보는 문제.

문제에서 원하는 답을 문제의 흐름대로 썼다.

장르별 재생횟수를 딕셔너리를 만들고 재생횟수 순서로 리스트에 담았다.
동시에 장르별 노래를 딕셔너리에 담았다.

좀 지저분하지만 딕셔너리를 이용해 문제에서 말한 요구사항을 따라가면 쉽게 해결할 수 있었다.

def solution(genres, plays):
    answer = []
    totalPlayed = {}
    musicPlayed = {}
    for i in range(len(genres)):
        if genres[i] not in totalPlayed.keys():
            totalPlayed[genres[i]] = plays[i]
            musicPlayed[genres[i]] = [(plays[i],i)]
        else:
            totalPlayed[genres[i]] += plays[i]
            musicPlayed[genres[i]].append((plays[i],i))
    genreByPlayed = list(zip(totalPlayed.keys(), totalPlayed.values()))
    genreByPlayed.sort(key = lambda x: x[1], reverse = True)
    # print(genreByPlayed)
    # print(musicPlayed)
    for i in range(len(genreByPlayed)):
        musiclist = musicPlayed[genreByPlayed[i][0]]
        print(musiclist)
        if len(musiclist) == 1:
            answer.append(musiclist[0][1])
        else:
            musiclist.sort(key = lambda x: x[0], reverse = True)
            answer.append(musiclist[0][1])
            answer.append(musiclist[1][1])
    
    return answer
profile
꾸준히 공부하자

0개의 댓글