[Python] Programmers. 위클리 챌린지 6주차 - 복서 정렬하기

위클리 챌린지 6주차 - 복서 정렬하기

문제 링크

풀이 코드

  • ans라는 리스트에 잘 담아주면 정렬 한 방에 풀 수 있습니다.
  • 말보다는 아래의 코드를 참고하시는 것이 더 도움될듯합니다.
  • Python 풀이 제일 첫번째 JeongJoon_Seo 좋아요 부탁드립니다!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 위클리 챌린지 6주차 - 복서 정렬하기


def solution(weights, head2head):
    result = []
    l = len(weights)
    # 한 번에 정렬해서 풀어봅시다!
    ans = [[0 for _ in range(4)] for _ in range(l)] # 승률, 무거운복서 이긴횟수, 자기 몸무게, 번호(음수로)
    for i in range(l):
        ans[i][2] = weights[i]
        ans[i][3] = -(i+1)
        cnt = 0 # 판수
        for j in range(l):
            if head2head[i][j] == 'W':
                ans[i][0] += 1 # 일단 이김
                cnt += 1
                if weights[i] < weights[j]:
                    ans[i][1] += 1 # 무거운 복서 이김
            elif head2head[i][j] == 'L':
                cnt += 1 # 판수만 늘려준다
        if cnt == 0:
            ans[i][0] = 0
        else:
            ans[i][0] /= cnt
    ans.sort(reverse=True) # 역순으로 정렬하면 모든 조건이 한 번에 정렬된다
    
    for i in range(l):
        result.append(-ans[i][3])
    return result

비고