코딩 테스트/프로그래머스

Lv3. 베스트앨범

  • -
728x90
반응형

문제 보기 :  베스트앨범

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제

  • 정답률 : 54%


작성 코드

def solution(genres, plays):    
    gg1 = {i:0 for i in genres}
    gg2 = {i:[] for i in genres}
    for i,genre in enumerate(genres):
        gg1[genre] += plays[i]
        a = [i,plays[i]]
        gg2[genre].append(a)
        
    for i,genre in enumerate(genres):
        gg2[genre].sort(key = lambda x:(-x[1],x[0]))
        
    k = sorted(gg1.items(), key = lambda x:-x[1])
    gg1 = dict(k) ; answer = []
    for i in gg1.keys():
        if len(gg2[i])>=2:
            for j in gg2[i][:2]:
                answer.append(j[0])
        else:
            answer.append(gg2[i][0][0])
    
    return answer

풀이

여러가지의 딕셔너리를 중복해서 사용해야해서 다소 헷갈리는 부분이 있었다.

장르별 재생횟수를 더한 뒤 재생횟수에 따라 정렬한 gg1
장르곡의 index와 재생횟수를 리스트로 담고 있는 gg2

이 두가지 딕셔너리를 활용해 문제를 풀이해야했다.

sorted(), lambda, sort()를 사용해서 딕셔너리를 정렬했고 (items를 정렬한 것이나 마찬가지)
gg1, gg2를 하나의 for문에 사용해 풀이했다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. 다리를 지나는 트럭  (0) 2024.12.10
Lv2. 게임 맵 최단거리  (1) 2024.10.10
Lv0. 평행  (1) 2024.10.06
Lv3. 기지국 설치  (0) 2024.10.04
Lv2. 피로도  (0) 2024.10.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.