반응형

복서 정렬하기

-풀이

def solution(weights, head2head):
    info = []
    # w = 복서 몸무게들의 길이
    w = len(weights)
    # p = w길이 만큼 0~(w-1)
    for p in range(w):
        high = [i for i in range(w) if weights[i]>weights[p]] # 더 무거운 사람 인덱스
        over = len([info for info in high if head2head[p][info]=="W"]) # 더 무거운 사람 이긴 수
        #w=n이면 0이다. 아니면 else문..
        rate = 0 if not (w-head2head[p].count("N")) else head2head[p].count("W")/(w-head2head[p].count("N"))
        info.append((p, weights[p], rate, over)) # 번호, 자기무게, 승률, 무거운복서 이긴 횟수
    info = sorted(info, key=lambda x: (x[2], x[3], x[1], -x[0]), reverse=True)
    return [num[0]+1 for num in info]

-풀이 설명

이 문제는 6주차 위클리 문제인데, zip함수를 써볼까 생각을 하다가 잘 안풀려서 오랜 고민끝에 풀이를 보게 되었다. high변수에 더 무거운 사람의 인덱스를 담고, over에 더 무거운 사람 이긴 수를 담고 rate에 N 관련된 경우의 수를 나타내어 주고 info리스트에 번호,자기무게,승률,무거운복서 이긴 횟수를 담고 람다 함수를 이용해 정렬해준다.

생각보다 람다 함수가 많이 쓰이는 것 같아 람다함수에 대해 더 이해하고 공부를 해야 할 것 같다.

+ Recent posts