해시(Lv.03) 베스트앨범 👾
https://school.programmers.co.kr/learn/courses/30/lessons/42579
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
for i, (g, p) in enumerate(zip(genres, plays)):
#{장르1:(고유번호,재생횟수)}의 형태
if g not in dic1:
dic1[g] = [(i, p)]
#{장르2:(고유번호,재생횟수)},{장르2:(고유번호,재생횟수)}의 형태
#{'classic': [(0, 500), (2, 150), (3, 800)], 'pop': [(1, 600), (4, 2500)]}
else:
dic1[g].append((i, p))
#{장르1:재생횟수}의 형태
#{'classic': 1450, 'pop': 3100}
if g not in dic2:
dic2[g] = p
else:
dic2[g] += p
# 재생횟수 기준 내림차순으로 정렬한다
# 재생된 장르 k의 고유번호,재생횟수를 가져온다
# 재생횟수에 따라서 내림차순으로 정렬한다
for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True):
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]:
answer.append(i)
print(dic1)
return answer
dic2 = {'classic': 1450, 'pop': 3100}
for (k, v) in sorted(dic2.items(), key=lambda x: x[1], reverse=True):
dic2.items()
딕셔너리 dic2의 모든 키-값 쌍을 가져옵니다.
sorted(dic2.items(), key=lambda x: x[1], reverse=True):
dic2.items()로 얻어진 키-값 쌍들을 값(value)에 따라 내림차순
으로 정렬합니다. key=lambda x: x[1] 부분은 정렬 기준을 지정하는데, 여기서 x는 딕셔너리의 키-값 쌍을 의미하며, x[1]은 각 쌍의 값에 해당합니다. 즉, 값에 따라 정렬하도록 지정한 것입니다. reverse=True는 역순으로 정렬하라는 의미입니다. 따라서, 값에 따라 내림차순
으로 정렬된 결과를 반환합니다.
딕셔너리 dic2의 값에 따라 내림차순으로 정렬된 결과는 다음과 같습니다:
#결과
[('pop', 3100), ('classic', 1450)]
#dic1
dic1 = {'classic': [(0, 500), (2, 150), (3, 800)], 'pop': [(1, 600), (4, 2500)]}
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]:
dic1[k]: 딕셔너리 dic1에서 특정 장르를 나타내는 키 k에 해당하는 값, 즉 해당 장르의 곡
들을 가져옵니다.
sorted(dic1[k], key=lambda x: x[1],reverse=True):
dic1[k]로 얻어진 곡들을 재생 횟수에 따라 내림차순
으로 정렬합니다. key=lambda x: x[1] 부분은 정렬 기준을 지정하는데, 여기서 x
는 각 곡
을 의미하며, x[1]
은 각 곡의 재생 횟수
에 해당합니다. 즉, 재생 횟수에 따라 정렬하도록 지정한 것입니다. reverse=True는 역순으로 정렬하라는 의미입니다. 따라서, 재생 횟수에 따라 내림차순으로 정렬된 결과를 반환합니다.
sorted(dic1[k], key=lambda x: x[1], reverse=True)[:2]:
정렬된 결과 중 상위 2개의 곡만
선택합니다. 이를 통해 재생 횟수가 가장 많은 상위 2개의 곡을 얻을 수 있습니다.
for (i, p) in sorted(dic1[k], key=lambda x: x[1], reverse=True)[:2]:: 상위 2개의 곡에 대해 반복문을 실행하면서, 각 곡의 인덱스 i와 재생 횟수 p를 언패킹하여 사용합니다.
따라서, 위 코드를 실행하면 'classic' 또는 'pop' 장르에 대해 재생 횟수에 따라 내림차순으로 정렬된 두 곡의 정보가 순서대로 (i, p) 형태로 출력됩니다.