Weekly Challenge 6週間の暑さランキング
コード#コード# '''
weights head2head result
[50,82,75,120] ["NLWL","WNLL","LWNW","WWLN"] [3,4,1,2]
[145,92,86] ["NLW","WNL","LWN"] [2,3,1]
[60,70,60] ["NNN","NNN","NNN"] [2,1,3]
'''
'''
전체승률이 높은 복서가 앞
동일승률일 경우 무거운복서이긴횟수가 많은 복서가 앞
무거운복서이긴횟수가 동일할 경우 무거운복서가 앞
모두 동일한 경우 -> 복서번호가 작은 번호가 앞
'''
def solution(weights, head2head):
answer = []
winOrder = []
turn = 0
for head in head2head :
myInfo = []
winCnt = head.count("W")
loseCnt = head.count("L")
turn += 1
# 본인차례, 승률 계산하기
myInfo.append(turn)
if winCnt+loseCnt != 0 :
myInfo.append((winCnt / (loseCnt + winCnt)) * 100)
else :
myInfo.append(0)
# 무거운 복서 이긴 횟수
heavyBoxerWin = 0
for idx in range(len(weights)):
if idx == turn-1:
continue
if weights[turn-1] < weights[idx] and head[idx] == "W":
heavyBoxerWin += 1
myInfo.append(heavyBoxerWin)
# 본인 무게
myInfo.append(weights[turn-1])
# 모든 정보 winOrder에 넣기
winOrder.append(myInfo)
# 정렬하기
winOrder.sort(key=lambda x:(-x[1],-x[2],-x[3],x[0]))
for boxer in winOrder :
answer.append(boxer[0])
return answer
print(solution([50,82,75,120],["NLWL","WNLL","LWNW","WWLN"]))
print(solution([145,92,86],["NLW","WNL","LWN"]))
print(solution([60,70,60],["NNN","NNN","NNN"]))
結果
Reference
この問題について(Weekly Challenge 6週間の暑さランキング), 我々は、より多くの情報をここで見つけました
https://velog.io/@hayeon/위클리챌린지6주차복서정렬하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
'''
weights head2head result
[50,82,75,120] ["NLWL","WNLL","LWNW","WWLN"] [3,4,1,2]
[145,92,86] ["NLW","WNL","LWN"] [2,3,1]
[60,70,60] ["NNN","NNN","NNN"] [2,1,3]
'''
'''
전체승률이 높은 복서가 앞
동일승률일 경우 무거운복서이긴횟수가 많은 복서가 앞
무거운복서이긴횟수가 동일할 경우 무거운복서가 앞
모두 동일한 경우 -> 복서번호가 작은 번호가 앞
'''
def solution(weights, head2head):
answer = []
winOrder = []
turn = 0
for head in head2head :
myInfo = []
winCnt = head.count("W")
loseCnt = head.count("L")
turn += 1
# 본인차례, 승률 계산하기
myInfo.append(turn)
if winCnt+loseCnt != 0 :
myInfo.append((winCnt / (loseCnt + winCnt)) * 100)
else :
myInfo.append(0)
# 무거운 복서 이긴 횟수
heavyBoxerWin = 0
for idx in range(len(weights)):
if idx == turn-1:
continue
if weights[turn-1] < weights[idx] and head[idx] == "W":
heavyBoxerWin += 1
myInfo.append(heavyBoxerWin)
# 본인 무게
myInfo.append(weights[turn-1])
# 모든 정보 winOrder에 넣기
winOrder.append(myInfo)
# 정렬하기
winOrder.sort(key=lambda x:(-x[1],-x[2],-x[3],x[0]))
for boxer in winOrder :
answer.append(boxer[0])
return answer
print(solution([50,82,75,120],["NLWL","WNLL","LWNW","WWLN"]))
print(solution([145,92,86],["NLW","WNL","LWN"]))
print(solution([60,70,60],["NNN","NNN","NNN"]))
Reference
この問題について(Weekly Challenge 6週間の暑さランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@hayeon/위클리챌린지6주차복서정렬하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol