반응형
그냥 내림차순 오름차순은 간단히 sort를 쓰면 되는거같은데
만약에 리스트가
[[a,2],[b,8],[c,1]]
이런식으로 있을때 특정 인덱스의 값으로 정렬하려면 어떻게해야할가??
sorted_arr = sorted(arr, key=lambda x: (x[1])
요런식으로 하면 인덱스 1번째 값을 기준으로 정렬이 된다 위에 예시에서는 숫자가 작은순으로 될것이다
근데 첫번째 인덱스 값으로 정렬하고 만약 값이 같으면 0번째 인덱스 값으로 정렬하려면?
sorted_arr = sorted(arr, key=lambda x: (x[1],x[0])
이런식으로 하면 된다고 한다
아무튼 나는 이 문제를 만나서 거의 모든 정보를 넣은 배열을 만들고 적절하게 정렬하여 문제를 해결했다
(변수 이름 정하는게 젤 어려움.. ㅋㅋㅋㅋㅋ)
def solution(genres, plays):
answer = []
genres_set = list(set(genres))
genres_index = [[_, 0, []] for _ in genres_set]
for i in range(len(genres_set)):
for j in range(len(genres)):
if genres_set[i] == genres[j]:
genres_index[i][1] += plays[j]
genres_index[i][2].append([j,plays[j]])
genres_index[i][2] = sorted(genres_index[i][2], key=lambda x: (-x[1],x[0]))
sorted_arr = sorted(genres_index, key=lambda x: x[1], reverse=True)
for genre_info in sorted_arr:
added_count = 0
for count in genre_info[2]:
if added_count >= 2:
break
else:
answer.append(count[0])
added_count+=1
return answer
내가 봐도 너무 어지럽고 뭐가 뭔지 모르겠지만 print를 찍어본다면 대충 이해는 될거다
테스트 케이스를 예로 들어 프린트 해보면
이런식으로 나온다
아무튼 계속 화이팅!!
반응형
'개발💻 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 정수 삼각형 Python (0) | 2024.05.21 |
---|---|
[프로그래머스] 단어변환 Python (20) | 2024.03.22 |
[프로그래머스] 네트워크 Python (21) | 2024.03.19 |
[프로그래머스] 카펫 Python (22) | 2024.03.18 |
[프로그래머스] 기능개발 Python (21) | 2024.03.14 |