-
[Python] Programmers 6주차_복서 정렬하기알고리즘/문제풀이 2021. 9. 18. 14:35728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/85002
2. 문제 요약
정렬문제
3. 아이디어 정리
- 복서 승률 계산, 이긴 횟수 세기, 자신의 무게, 자신의 번호를 리스트에 넣어준다.
- 해당 리스트를 정렬을 진행한다.
4. 문제 풀이
4-1. 내 풀이
def solution(weights, head2head): answer = list() win_rate = list() # 복서 승률 계산, 이긴횟수 세기(나보다 무거운 사람), 자신의 무게, 자신의 번호 넣기 for i, (w, head) in enumerate(zip(weights, head2head)): win_count = 0 # 무거운 사람을 이긴 사람 횟수 win = 0 lose = 0 for j, h in enumerate(head): if h == "W": win += 1 if w < weights[j]: win_count += 1 if h == "L": lose += 1 if win == 0 or (win + lose) == 0: rate = 0 else: rate = win / (win + lose) win_rate.append((rate, win_count, w, i + 1)) # 승률 높은 사람, 이긴 횟수가 많은 사람, 자신의 무게가 무거운 사람, 자기 번호가 낮은 사람 기준 정렬 win_rate.sort(key=lambda x: (-x[0], -x[1], -x[2], x[3])) return [num for w, w1, w3, num in win_rate]
5. 결론
- 정렬 문제
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 14676 영우는 사기꾼 (0) 2021.09.18 [Python] 백준 15684 사다리 조작 (3) 2021.09.18 [Python] 백준 16938 캠프 준비 (0) 2021.09.11 [Python] 백준 2579 계단 오르기 (0) 2021.09.11 [Python] Programmers 위클리 챌린지 5 모음 사전 (0) 2021.09.11