https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(genres, plays): # 고유번호가 인덱스인 노래장르 / 각각 재생된 횟수
'''
plays가 가장 높은 장르먼저
그중에서도 가장 높은 plays 노래
그중에서도 재생횟수 같으면 고유번호가 낮은거
장르별로 노래 두개씩 고르기
순서대로 출력
리스트1 = [[전체 플레이 횟수, [재생1위인덱스, 플레이수], [재생2위인덱스, 플레이수]], [...]...]
리스트2 = [장르명1, 장르명2, 장르명3]
'''
genre_info = []
genre_names = []
for i in range(len(genres)):
if genres[i] in genre_names:
idx = genre_names.index(genres[i])
genre_info[idx][0] += plays[i]
if genre_info[idx][1][1] < plays[i]:
genre_info[idx][2][0] = genre_info[idx][1][0]
genre_info[idx][2][1] = genre_info[idx][1][1]
genre_info[idx][1][0] = i
genre_info[idx][1][1] = plays[i]
elif genre_info[idx][2][0] == -1 or genre_info[idx][2][1] < plays[i]:
genre_info[idx][2][0] = i
genre_info[idx][2][1] = plays[i]
else:
genre_names.append(genres[i])
genre_info.append([plays[i], [i, plays[i]],[-1, -1]])
genre_info.sort(key= lambda x: x[0], reverse=True)
answer = []
for genre in genre_info:
answer.append(genre[1][0])
if genre[2][0] != -1:
answer.append(genre[2][0])
return answer
'프로그래머스' 카테고리의 다른 글
프로그래머스 84512. 모음사전 (0) | 2025.01.15 |
---|---|
프로그래머스 42839. 소수 찾기 (0) | 2025.01.14 |
프로그래머스 42578. 의상 (0) | 2025.01.09 |
프로그래머스 42577. 전화번호 목록 (0) | 2025.01.09 |
프로그래머스 42576. 완주하지 못한 선수 (0) | 2025.01.04 |