★VER2.0★베스트엘범[프로그래머스]
2023. 1. 2. 23:32
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

VERSION 1.0
from functools import reduce
from collections import Counter
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
#print(list(zip(genres, plays)))
for i, (g, p) in enumerate(zip(genres, plays)):
#i = 0 g= 'classic' p = 500
#i= 1 g= 'pop' p =600
#i=2 g= 'classic' p =150
#i=3 g= 'classic' p =800
#i= 4 g= 'pop' p =2500
if g not in dic1: #'classic' in dic1 , 'pop' in dic1
dic1[g] = [(i, p)]
#dic1['classic'] = [(0,500)]
#dic1['pop'] = [(1,600)]
else:
dic1[g].append((i, p))
#dic1['classic'].append((2,150)) ==> dic1 {'classic' : [(0,500), (1,600)] ,'pop' : [(1,600)]}
#dic1['classic'].append((3,800)) ==> dic1 {'classic' : [(0,500), (1,600), (3,800)] ,'pop' : [(1,600)]}
#dic1['pop'].append((4,2500)) ==> dic1 {'classic' : [(0,500), (1,600), (3,800)] ,'pop' : [(1,600) , (4,2500)]}
#print(dic1)
if g not in dic2: #classic in dic2
dic2[g] = p
#dic2['classic'] = 500
#dic2['pop'] = 600
else:
dic2[g] += p
#dic2['classic'] += 600 ==> {'classic' : 500+600 , 'pop' : 600}
#dic2['classic'] += 800 ==> {'classic' : 500+600+800 , 'pop' : 600}
#dic2['pop'] += 600 ==> {'classic' : 500+600+800 , 'pop' : 600+2500}
#print(dic2)
for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True):
#sorted(dic2.items()) ==> {'classic' : 2100 , 'pop' : 3100}
#key = lambda x:x[1] ==> 숫자들로 정렬 하겠다.
#k = 'pop' , 'classic'
#v = 3100 , 2100
#print("dic1 : {}".format(dic1[k]))
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]: #장르 별로 가장 많이 재생된 노래를 최대 두개까지 모아 베스트엘범 출시 하므로
# print("dic1_i : {}".format(i))
# print("dic1_p : {}".format(p))
#sorted(dic1['pop']) = [(1,600) , (4,2500)]
#sorted(dic1['pop'], key=lambda x:x[1], reverse=True)[:2] = [(4,2500) , (1,600)]
answer.append(i)
return answer728x90
반응형
'Python(프로그래머스) > 해시' 카테고리의 다른 글
| ★VER5.0★해시★Collections.Counter★완주하지 못한 선수[프로그래머스] (0) | 2023.06.18 |
|---|---|
| ★VER5.0★해시★Collections.Counter★폰켓몬[프로그래머스] (0) | 2023.06.18 |
| VER3.0★문자열 리스트(정수형) 정렬할땐 맨앞에꺼 숫자에 따라 정렬된다.★리스트 시작★zip★startswith★전화번호목록[프로그래머스] (0) | 2023.05.29 |
| list(map(lambda x : x[1] , 리스트)) ==> 2중 리스트 뒤에값★VER2.0★zip★reduce★위장[프로그래머스] (0) | 2023.01.02 |
| ★zip★items★directory append★베스트엘범[프로그래머스] (0) | 2022.11.17 |