[Programmers] 복서 정렬하기

suhyun·2021년 10월 7일
0

백준/프로그래머스

목록 보기
6/81

WeeklyChallenge06

문제 링크

복서 정렬하기

문제 풀이

def solution(weights, head2head):
    info = []
    w = len(weights)
    for i in range(w):
        high = [h for h in range(w) if weights[i] < weights[h]]
        fat = 0
        v = 0
        n = 0
        for j in high:
            if head2head[i][j] == "W":
                fat += 1
        for j in range(w):
            if head2head[i][j] == "W":
                v += 1
            elif head2head[i][j] == "N":
                n += 1
            if w == n:
                victory = 0
            else:
                victory = v / (w - n)
        info.append((victory, fat, weights[i], i))
    info = sorted(info, key=lambda x: (x[0], x[1], x[2], -x[3]), reverse=True)
    print(info)
    return [x[3]+1 for x in info]
  • 튜플의 형태로 인덱스, 승률, 무게, 자신보다 무거운 선수 이긴 횟수를 리스트에 저장
  • 이때 인덱스를 0부터 저장하면 마지막 return할 때 1을 더해주는거 주의
  • 승률, 무거운 선수 이긴 횟수, 무게순으로 오름차순 정렬, 인덱스는 내림차순 정렬
  • 저장된 인덱스 return

후기

튜플, 딕셔너리, lambda를 이용한 정렬 기준 연습하기 좋은 문제

profile
꾸준히 하려고 노력하는 편 💻

0개의 댓글