★zip★items★directory append★베스트엘범[프로그래머스]
2022. 11. 17. 11:33
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42579
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
print("list(zip(genres, plays)) : {}".format(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 : {}".format(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 : {}".format(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]:
#장르 별로 가장 많이 재생된 노래를 최대 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 answer
print(solution(["classic", "pop", "classic", "classic", "pop"] , [500, 600, 150, 800, 2500]))
주석 하나하나 읽어보자
728x90
반응형
'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 |
★VER2.0★베스트엘범[프로그래머스] (0) | 2023.01.02 |
list(map(lambda x : x[1] , 리스트)) ==> 2중 리스트 뒤에값★VER2.0★zip★reduce★위장[프로그래머스] (0) | 2023.01.02 |