소스 코드

def solution(weights, head2head):
    n = len(weights)
    rank = [0 for _ in range(n)]

    for q in range(n):

        # 승, 패, 더 무거운 복서 이긴 횟수
        win = 0
        lose = 0
        win_more = 0
        while True:
            for w in range(n):
                if head2head[q][w] == 'W':
                    win += 1
                    if weights[q] < weights[w]:
                        win_more += 1

                elif head2head[q][w] == 'L':
                    lose += 1

            if win == 0 and lose == 0:
                
                # 승률, 더 무거운 복서 이긴 횟수, 몸무게, 번호
                rank[q] = [0, 0, weights[q], q + 1]

            else:
                rank[q] = [win / (win + lose), win_more, weights[q], q + 1]

            break

    # 번호는 내림차순이므로 정렬할 필요 없음
    rank.sort(key=lambda x: (x[0], x[1], x[2]), reverse=True)

    answer = [0 for _ in range(n)]
    for w in range(n):
        answer[w] = rank[w][3]

    return answer

 


해결 방법

1. 조건을 확인하기 위해 필요한 값들을 구한 후, 조건에 따라서 정렬하면 됨


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.