웹찢남

[프로그래머스 42579 베스트 앨범 문제] PYTHON 본문

백준 Algorithm

[프로그래머스 42579 베스트 앨범 문제] PYTHON

harry595 2021. 4. 24. 01:05

 

내일 네이버 코딩 테스트여서 프로그래머스에서 문제를 풀었다.

간단한 해시 문제인데 나는 마음이 좋지 않아서 그런지 뒤죽 박죽으로 코딩을 했다...

로직은 말도 안되긴하는데 장르별 play 횟수를 dic으로 만든 후 value로 정렬 했다.

그 후 play가 많은 장르에서 가장 play가 많은 index 두개씩 return 했다

노래가 하나일 경우 예외처리를 해야한다.

 

def solution(genres, plays):
    genre_list=[]
    album={}
    for i in range(len(genres)):
        if genres[i] not in genre_list:
            genre_list.append(genres[i])
            album[genres[i]]=plays[i]
        else:
            album[genres[i]]+=plays[i]
    album=sorted(album.items(),key=(lambda x : x[1]),reverse=True)
    allist=[]
    for z in album:
        allist.append(z[0])
    
    result_list=[[] for _ in range(len(allist))]
    num_list=[[] for _ in range(len(allist))]
    
    for j in range(len(genres)):
        flag=0
        for k in range(len(allist)):
            if allist[k]==genres[j]:
                flag=k
        result_list[flag].append(plays[j])
        num_list[flag].append(j)
        
    result=[]
    print(result_list)
    print(num_list)
    print(result_list[0].index(max(result_list[0])))
    
    
    for m,tmplist in enumerate(result_list):
        if len(tmplist) == 1:
            result.append(num_list[m][0])
        else:
            indextmp=tmplist.index(max(tmplist))
            tmp1=num_list[m][indextmp]
            tmplist.pop(indextmp)
        
            num_list[m].pop(indextmp)
            tmp2=num_list[m][tmplist.index(max(tmplist))]
            result.append(tmp1)
            result.append(tmp2)
        
    return result
Comments