공부, 기록

프로그래머스 베스트앨범 파이썬(PYTHON) 본문

코딩

프로그래머스 베스트앨범 파이썬(PYTHON)

무는빼주세요 2020. 11. 14. 14:11

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

 

코딩테스트 연습 - 베스트앨범

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가

programmers.co.kr

 

def solution(genres, plays):
    answer = []
    songs = dict()
    for i,x in enumerate(zip(genres, plays)):
        if x[0] not in songs:
            songs[x[0]]=[[i,x[1]]]
        else:
            songs[x[0]].append([i,x[1]])
    suchgenre=getManyGenre(genres,plays)
    for i in songs:
        songs[i].sort(key = lambda x:(-x[1],x[0]))
    suchgenre=sorted(suchgenre.items(), key = lambda x:-x[1])
    for i in suchgenre:
        if len(songs[i[0]]) >1:
            a=(songs[i[0]].pop(0))
            b=(songs[i[0]].pop(0))
            answer.append(a[0])
            answer.append(b[0])
        elif len(songs[i[0]]) == 1:
            a=songs[i[0]].pop(0)
            answer.append(a[0])
    return answer
def getManyGenre(genres,plays):
    genre = set(genres)
    genrelist=dict()
    for i in genre:
        genrelist[i]=0
    for i in zip(genres,plays):
        genrelist[i[0]] = genrelist[i[0]]+i[1]
    return genrelist