소스 코드
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제풀이.프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩] [1차] 캐시 - PYTHON (0) | 2021.10.05 |
---|---|
[프로그래머스 코딩] 실패율 - PYTHON (0) | 2021.09.05 |
[프로그래머스 코딩] 프린터 - PYTHON (0) | 2021.09.04 |
[프로그래머스 코딩] 조이스틱 - PYTHON (0) | 2021.09.03 |
[프로그래머스 코딩] 전화번호 목록 - PYTHON (0) | 2021.09.02 |