https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
각 노래의 장르와, 플레이 된 횟수가 주어질 때, 가장 많이 플레이된 장르의 노래가 먼저 나오게끔, 각 장르별로 많이 재생된 2개의 노래씩을 모아 베스트 앨범을 만드는 문제이다.
장르: [장르 재생 횟수, [[노래 인덱스, 재생 횟수], [노래 인덱스, 재생 횟수]...] 꼴의 딕셔너리를 만들고, 장르 재생 횟수와 노래 재생 횟수로 적절히 정렬을 수행하여 문제를 해결하였다.
코드에서 딕셔너리 genres_dict와 딕셔너리를 정렬된 리스트로 표현한 temp를 중간에 출력한 테스트 결과이다.
소스 코드
import collections
def solution(genres, plays):
genres_dict = collections.defaultdict(list)
for index, genre in enumerate(genres):
if not genres_dict[genre]:
genres_dict[genre].append(plays[index])
genres_dict[genre].append([[index, plays[index]]])
else:
genres_dict[genre][1].append([index, plays[index]])
genres_dict[genre][0] += plays[index]
temp = sorted(genres_dict.values(), key=lambda x: x[0], reverse=True)
for song in temp:
song[1].sort(key=lambda x: x[1], reverse=True)
answer = []
for song in temp:
if len(song[1]) >= 2:
answer.append(song[1][0][0])
answer.append(song[1][1][0])
else:
answer.append(song[1][0][0])
return answer
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - H-index [파이썬] (0) | 2022.09.17 |
---|---|
프로그래머스 - 주식가격 [파이썬] (0) | 2022.09.16 |
프로그래머스 - 카카오프렌즈 컬러링북 [C++] (0) | 2022.08.13 |
프로그래머스 - 멀쩡한 사각형 [C++] (0) | 2022.08.04 |
프로그래머스 - 튜플 [파이썬] (0) | 2022.07.21 |