[programmers] 베스트앨범

KwonSC·2022년 5월 8일
0

programmers - Python

목록 보기
4/23
post-thumbnail

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


Code

def solution(genres, plays):
    genre = {}
    lst = []
    idx = 0
    for g, p in zip(genres, plays):
        lst.append([p, idx, g])
        idx += 1
        if (g in genre):
            genre[g] += p
        else:
            genre[g] = p
    sorted_genre = sorted(genre.items(), key = lambda x : x[1], reverse=True)
    lst.sort(key = lambda x : (x[0], -x[1]), reverse=True)
    answer = []
    for genre, _ in sorted_genre:
        cnt = 0
        for p, idx, g in lst:
            if (g == genre):
                answer.append(idx)
                cnt += 1
            if (cnt > 1):
                break
    return answer

Solution

genre별 플레이 수를 카운트하고 별도의 리스트에 플레이수, 인덱스, 장르를 넣는다. 그후 genre는 플레이 수의 내림차순, 별도의 리스트는 플레이수, -인덱스로 내림차순하여 정렬후 각 genre를 돌며 리스트에 genre와 장르가 같으며 노래의 수가 2개 이하이면 answer에 넣으며 순회후 answer를 리턴한다.
Java로 풀때는 너무 오래걸렸는데 Python으로 해결하니 너무 어이없을정도로 쉽게 풀렸다.

0개의 댓글