728x90
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3
2. 풀이
1) 가장 많이 재생된 장르순으로 정렬한다.
2) 가장 많이 재생된 play 순으로 정렬한다.
3) play 수가 동일하면 가장 작은 index 먼저 정렬한다.
3. 코드
def solution(genres, plays):
answer = []
genres_cnt = {}
for i in range(len(genres)):
g = genres[i]
if g not in genres_cnt:
genres_cnt[g] = plays[i]
else:
genres_cnt[g] += plays[i]
# 1.가장 많이 재생된 장르순 정렬
genres_cnt = sorted(genres_cnt.items(), key=lambda x:x[1], reverse=True)
for gc in genres_cnt:
genre = gc[0]
play_cnt = [] #idx, play_count
for i in range(len(genres)):
if(genres[i] == genre):
play_cnt.append({'idx':i, 'cnt':plays[i]})
#2. play count 높은순, 고유번호 오름차순 정렬
play_cnt = sorted(play_cnt, key=lambda x:(-x['cnt'], x['idx']))
if len(play_cnt)>=2:
answer.append(play_cnt[0]['idx'])
answer.append(play_cnt[1]['idx'])
else:
answer.append(play_cnt[0]['idx'])
return answer
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 가장 먼 노드 (C++) (0) | 2021.09.08 |
---|---|
[프로그래머스] 입국심사 (C++) (0) | 2021.09.08 |
[프로그래머스] 섬 연결하기 (C++) (0) | 2021.09.06 |
[프로그래머스] 네트워크 (C++) (0) | 2021.09.06 |
[백준] 외판원 순회 (C++) (0) | 2021.05.29 |
댓글