728x90
쌩 노가다 한 틀린 코드
def solution(genres, plays):
answer = []
dict = {}
tmp, tmp2 = [], []
for i in range(len(genres)):
tmp.append( [genres[i], plays[i] ])
for ge, pl in tmp:
if ge not in dict:
dict[ge] = pl
else:
dict[ge] += pl
max1_genres = max(dict, key=dict.get)
del dict[max1_genres]
max2_genres = max(dict, key=dict.get)
for idx, i in enumerate(tmp):
if i[0] == max1_genres:
tmp2.append([idx, i[1]])
tmp2.sort(key=lambda x : x[1], reverse=True)
for i in tmp2[:2]:
answer.append(i[0])
tmp2 = []
for idx, i in enumerate(tmp):
if i[0] == max2_genres:
tmp2.append([idx, i[1]])
tmp2.sort(key=lambda x : x[1], reverse=True)
for i in tmp2[:2]:
answer.append(i[0])
return answer
ㅜㅜ 20점이다.
def solution(genres, plays):
answer = []
dict1, dict2 = {}, {}
for idx, (ge, pl) in enumerate(zip(genres, plays)):
if ge not in dict1:
dict1[ge] = pl
else:
dict1[ge] += pl
if ge not in dict2:
dict2[ge] = [(idx, pl)]
else:
dict2[ge].append((idx, pl))
for (key, value) in sorted(dict1.items(), key=lambda x : x[1], reverse=True):
for (idx, pl) in sorted(dict2[key], key=lambda x : x[1], reverse=True)[:2]:
answer.append(idx)
return answer
zip함수로 두 개의 길이가 같은 리스트를 순서대로 묶을 수 있다는 것도 잊어버리고 있었다.
파이썬 딕셔너리도 정렬이 가능하다.
728x90
'[Coding Test] > [프로그래머스]' 카테고리의 다른 글
[프로그래머스] lv2 올바른 괄호 / 파이썬, 고득점kit (0) | 2023.10.09 |
---|---|
[프로그래머스] lv1 같은 숫자는 싫어 / 파이썬, 고득점kit (0) | 2023.10.08 |
[프로그래머스] lv2 의상 / 파이썬, 고득점kit (0) | 2023.10.05 |
[프로그래머스] lv2 전화번호 목록 / 파이썬, 고득점kit (0) | 2023.10.05 |
[프로그래머스] lv1 완주하지 못한 선수 / 파이썬, 고득점kit (0) | 2023.10.04 |