알고리즘/구현
lambda를 활용한 sort (Python)
mimi04
2024. 1. 2. 21:11
내 코드)
from fractions import Fraction
def solution(N, stages):
answer = []
success = []
cnt = 0
for i in range(1, N + 1):
if i in stages:
a = stages.count(i)
b = len(stages) - cnt
cnt += a
success.append([i, float(Fraction(a, b))])
if i not in stages:
success.append([i, 0])
success.sort(key = lambda x : (-x[1], x[0])) #x[1]은 내림차순, 같은 값일 경우 x[0] 오름차순 정렬
for i in range(N):
answer.append(success[i][0])
return answer
*오늘의 배움!
ⓐ리스트.sort(key = lambda x : ( -x[1] , x[0]))
>> 앞에 -1을 붙이면 reverse=True 역순을 의미함. 즉, x[1]키를 기준으로 역순으로 정렬하고, x[1]이 같은 값일 경우 x[0]을 기준으로 정렬한다.
ⓑ리스트.sort(key = lambda x : -x[1])
>> 같은 값이 없거나 계산할 필요 없을 경우 이런식으로 조건 하나만 써줘도 됨.
ⓒsorted(리스트, key= len)
>> 이런식으로 sorted로 계산해줘도 된다.
반응형