혜온의 이것저것

[코딩테스트 고득점 kit] 해시 - 베스트앨범 (Python) 본문

Algorithm/Programmers

[코딩테스트 고득점 kit] 해시 - 베스트앨범 (Python)

혜온 :) 2023. 4. 5. 16:25
문제 이해 및 설명

우선 장르끼리 나눠서 확인하기 위해 딕셔너리를 사용해주었다.

이때, 출력을 할때 고유번호를 출력하기 때문에 고유번호도 함께 저장하여주었다.

이후 장르끼리 순위를 매기기 위해 위에서 만든 딕셔너리에서 for문을 돌면서 재생횟수를 더하여주었다.

그 다음 장르 안에서 순위를 매기기 위해 한 장르씩 돌아가면서 재생횟수와 고유번호에 맞게 정렬해주었다.

이때 각 장르당 2개씩만 고유번호를 answer 리스트에 추가해주었다.

 

최종 코드
def solution(genres,plays):
    answer=[]
    cnt={}
    for i in range(len(genres)):
        if genres[i] in cnt:
            cnt[genres[i]].append([plays[i],i])
        else:
            cnt[genres[i]]=[[plays[i],i]]    
    
    genre_rank={}
    for genre in cnt.keys():
        play_sum=0
        for song in cnt[genre]:
            play_sum+=song[0]
        genre_rank[genre]=play_sum
    genre_rank=sorted(genre_rank.items(),key=lambda x:-x[1])
    
    for genre in genre_rank:
        song_rank=sorted(cnt[genre[0]],key=lambda x:(-x[0],x[1]))
        genre_max=0
        for song in song_rank:
            answer.append(song[1])
            genre_max+=1
            if genre_max==2:
                break
    return answer

 

문제 출처

프로그래머스 코딩테스트 고득점 kit

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

 

프로그래머스

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

programmers.co.kr

 

Comments