반응형
Recent Posts
Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스택
- softeer
- 99항해
- 코딩테스트 준비
- 파이썬
- 코딩테스트준비
- 항해99
- python 2309
- BOJ
- 기능개발
- 백준
- 알고리즘
- 프로그래머스
- 구현
- 개발자 취업
- 큐
- boj 2309
- 딥러닝
- easy 딥러닝
- 개발자취업
- 혁펜하임
- 99클럽
- leetcode
- BFS
- 활성화 함수
- 해시
- til
- dfs
- Python
- 백준 2309
Archives
- Today
- Total
동까의 코딩
[python] 프로그래머스 - 베스트 앨범 본문
반응형
베스트 앨범 문제 풀이 및 상세 설명
프로그래머스의 베스트 앨범 문제는 각 장르별로 재생 횟수를 기준으로 노래들을 정렬하고, 장르의 총 재생 횟수가 높은 순으로 두 곡씩 선택하여 베스트 앨범을 구성하는 문제입니다.
문제 해결 접근 방식
문제를 해결하기 위한 주요 단계는 다음과 같습니다:
장르별 분류:
입력으로 주어진genres
와plays
리스트를 이용하여, 각 장르에 해당하는(재생 횟수, 인덱스)
튜플들을 저장합니다.- 예를 들어,
"pop"
장르에 속하는 노래들의 재생 횟수와 해당 인덱스를 함께 저장합니다.
- 예를 들어,
내부 정렬:
각 장르별 리스트를 재생 횟수가 높은 순으로 정렬합니다.- 만약 재생 횟수가 같은 경우, 인덱스가 작은 순으로 정렬하여 우선순위를 결정합니다.
장르 정렬:
전체 장르를 해당 장르에 속하는 노래들의 총 재생 횟수를 기준으로 내림차순 정렬합니다.- 이를 통해 가장 인기 있는 장르부터 베스트 앨범에 반영할 수 있습니다.
노래 선택:
정렬된 각 장르별로 상위 2개의 노래(재생 횟수가 가장 높은 노래)를 선택하여 최종 결과 리스트에 추가합니다.최종 결과 반환:
선택된 노래들의 인덱스를 순서대로 반환하여 베스트 앨범을 구성합니다.
이러한 단계들을 통해 문제를 구조적으로 해결할 수 있으며, 각 단계마다 정렬과 선택 기준을 명확히 하여 올바른 결과를 도출할 수 있습니다.
코드 구현
아래는 위의 문제 해결 접근 방식을 반영한 파이썬 코드입니다. 각 단계별로 중요한 부분에 주석을 추가하여 설명합니다.
def solution(genres, plays):
# answer: 최종적으로 베스트 앨범에 들어갈 곡의 인덱스들을 저장할 리스트
answer = []
# hash_map: 각 장르를 key로 하여 (재생 횟수, 인덱스) 튜플 리스트를 value로 저장
hash_map = {}
# 1. 장르별로 (재생 횟수, 인덱스) 튜플을 hash_map에 저장
for i in range(len(genres)):
if genres[i] in hash_map:
hash_map[genres[i]].append((plays[i], i))
else:
hash_map[genres[i]] = [(plays[i], i)]
# 2. 각 장르 내에서 재생 횟수가 많은 순으로 정렬
# - 재생 횟수가 동일하면 인덱스가 작은 순으로 정렬하여 우선순위를 결정
for genre in hash_map:
hash_map[genre].sort(key=lambda x: (-x[0], x[1]))
# 3. 전체 장르를 해당 장르의 총 재생 횟수를 기준으로 내림차순 정렬
sorted_hash_map = dict(sorted(hash_map.items(), key=lambda x: -sum(play[0] for play in x[1])))
# 4. 각 장르별로 상위 2개의 곡(재생 횟수 기준) 인덱스를 answer에 추가
for genre in sorted_hash_map:
# 장르별로 최대 2개의 곡을 선택
answer.extend([index for _, index in hash_map[genre][:2]])
return answer
반응형
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[python] 프로그래머스 - 가장 큰 수 (0) | 2025.03.20 |
---|---|
[python] 프로그래머스 - 기능개발 (0) | 2025.03.12 |
[python] 프로그래머스 - 의상 (0) | 2025.03.12 |
[python] 프로그래머스 - 전화번호 목록 (0) | 2025.03.11 |
[python] 프로그래머스 - 완주하지 못한 선수 (0) | 2025.03.11 |