[프로그래머스] level3. 베스트앨범 (파이썬, javascript)

728x90
반응형

1. 파이썬


def solution(genres, plays):
    answer = []
    dic={}
    for g,p in zip(genres,plays):
        if g not in dic:
            dic[g]=p
        else:
            dic[g]+=p
     # 곡 내림차순 정렬
    sdic=sorted(dic.items(),key=lambda x:x[1],reverse=True)

    for s in sdic:
        temp=[]
        for i,p in enumerate(plays):
            if genres[i]==s[0]:
                temp.append((p,i))
        cnt=0
        temp=sorted(temp, key=lambda x:(-x[0],x[1]))
        for t in temp:
            num,idx=t
            answer.append(idx)
            cnt+=1
            if cnt==2:
                break
    return answer

2. javascript

 

function solution(genres, plays) {
    var answer = [];
    const dict={};
    for(let i=0;i<genres.length;i++){
        let genre=genres[i];
        if(dict[genre]===undefined){
            dict[genre]=plays[i];
        }else{
            dict[genre]+=plays[i];
        }
    }
    const arr=Object.entries(dict);
    arr.sort((a,b)=>b[1]-a[1]);

    for(let i=0;i<arr.length;i++){
        const genre=arr[i][0];
        let temp=[];
        for(let j=0;j<plays.length;j+=1){
            if(genres[j]===genre){
                temp.push([j,plays[j]]);
            }
        }
        temp.sort((a,b)=>b[1]-a[1]);
        temp=temp.slice(0,2);
        for(let j=0;j<temp.length;j++){
            answer.push(temp[j][0]);
        }
    }
    return answer;
}
728x90
반응형
TAGS.

Comments