bit가 눈 앞에서 왔다갔다

Py) 프로그래머스 42579 본문

Algorithm/Prob

Py) 프로그래머스 42579

헬린인형 2022. 2. 9. 23:43

https://programmers.co.kr/learn/courses/30/lessons/42579

 

코딩테스트 연습 - 베스트앨범

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가

programmers.co.kr

 

def solution(genres, plays):
    answer = []
    dict = {}

    for i in range(len(genres)):
        if genres[i] in dict:
            dict[genres[i]][0].append(i)
            dict[genres[i]][1] += plays[i]
        else:
            dict[genres[i]] = [[i], plays[i]]

    #print(dict)
    dict_list = sorted(dict.items(), key=lambda x: -x[1][1])
    # dict.items를 정렬할건데, lambda를 사용할것.: value의 [1]인덱스 사용
    #print(dict_list)

    for j in dict_list:
        if len(dict[j[0]][0]) == 1:
            answer.append(dict[j[0]][0][0])
        else:
            dict[j[0]][0].sort(key=lambda x: -plays[x])
            answer.extend(dict[j[0]][0][:2])

    return answer

정말..헷갈리는 코드였다...

버리지 않고 계속 붙잡고 있었던건.. 이중 딕셔너리? 딕셔너리를 공부하기 위함 때문이다.. 그거 아니었으면 진작 버림

그와중에 lambda에서 -plays[x] 부분은 이해가 안됨 저게 뭐지

 

*

lambda : dictionary의 x[0]은 key를, x[1]는 value를 의미함  / - 붙이면 역순

append, extend 차이

extend : iterable 자료형에서 사용 -> https://ooyoung.tistory.com/117 

 

 

반응형
Comments