본문 바로가기

알고리즘/구현

lambda를 활용한 sort (Python)

 

내 코드)

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로 계산해줘도 된다.

 

반응형