반응형
풀이 언어 : PYTHON
def solution(weights, head2head):
answer = []
newInforms = []
for i, log in enumerate(head2head) :
# 전체 이긴 횟수
win = 0
# 전체 진 횟수
lose = 0
# 나보다 무거운 선수를 이긴 횟수
heavy_win = 0
for j, l in enumerate(log) :
if l == "W" :
if weights[i] < weights[j] :
heavy_win += 1
win += 1
else :
win += 1
elif l == "L" :
lose += 1
# 승률 구하기
if win+lose > 0 :
rate = win/(win+lose)*100
else :
rate = 0
newInforms.append([i+1, weights[i], rate, heavy_win])
# 승률 -> 나보다 무거운 선수 이긴 횟수 -> 몸무게 -> 번호 순 정렬
newInforms.sort(key=lambda x:(-x[2], -x[3], -x[1], x[0]))
for inform in newInforms :
answer.append(inform[0])
return answer
6주차니까 난이도가 올라갔으려니 했는데 그것도 아니었다.
이번 문제도 귀찮을 뿐 어렵지는 않은 문제다.
그냥 복서들의 승률, 자신보다 무거운 선수를 이긴 횟수, 몸무게를 구한후에
그걸 문제가 요구하는 순으로 정렬하면 그만이다.
key=lambda를 사용하여 정렬의 기준을 복수개 설정할 수 있는 방법만 안다면 정말 쉬운 문제다
링크
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 위클리 체인지 5주차 - 모음사전 (0) | 2021.10.08 |
---|---|
프로그래머스 위클리 챌린지 2주차 - 상호평가 (0) | 2021.10.08 |
백준 18870번 좌표 압축 (0) | 2021.09.16 |
백준 2108번 통계학 (0) | 2021.09.16 |
백준 10989번 수 정렬하기 3 (0) | 2021.09.16 |
댓글