プログラマランキング
順位
問題の説明
ボクシングの試合にはn人のボクサーが参加し、それぞれ1番からn番まで参加した.ボクシングの試合は1対1で行われ、A選手の実力がB選手より優れていれば、A選手はいつもB選手に勝つ.審判は与えられた試合の結果に基づいて選手をランキングしたいと思っている.しかし、いくつかの試合結果を失ったため、正確な順位はつけられなかった.
アスリートの数n,試合結果の2次元配列結果をパラメータとして与える場合は,正確に並べ替えられるアスリートの数を返すために解関数を記述してください.
せいげんじょうけん選手の数は1名以上100名以下. 試合の結果は1試合以上4500試合以下であった. その結果、各行[A,B]を並べてA選手がB選手に勝ったことを示す. すべての試合の結果に矛盾はなかった. I/O例
nresultsreturn5[[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]2
I/O例説明
2番選手は[1,3,4]選手に敗れ、5番選手が勝利したので4位だった.
5番は4位の2番に負けて5位だった
concept Google霊箱.これはまったく思いもよらなかった. で一番勝ったのは一番すごいものではない...!勝っても相手に負ける可能性があるから... だからグーグルの霊箱... Codeパス に移動すべてのパスの最低コスト. ...
問題の説明
ボクシングの試合にはn人のボクサーが参加し、それぞれ1番からn番まで参加した.ボクシングの試合は1対1で行われ、A選手の実力がB選手より優れていれば、A選手はいつもB選手に勝つ.審判は与えられた試合の結果に基づいて選手をランキングしたいと思っている.しかし、いくつかの試合結果を失ったため、正確な順位はつけられなかった.
アスリートの数n,試合結果の2次元配列結果をパラメータとして与える場合は,正確に並べ替えられるアスリートの数を返すために解関数を記述してください.
せいげんじょうけん
nresultsreturn5[[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]2
I/O例説明
2番選手は[1,3,4]選手に敗れ、5番選手が勝利したので4位だった.
5番は4位の2番に負けて5位だった
concept
def solution(n, results):
answer = 0
#정확하게...?
#가장 많이 이긴 놈이 제일 쎈게 아니다...
#이긴수가 비슷하더라도.. 상대 녀석에게 졌을 수 있기 때문..!
#그렇담 제일 많이 진 녀석으로 생각해도..?
graph = [ [0]*(n+1) for _ in range(n+1)]
for win, los in results:
graph[win][los] = -1
graph[los][win] = 1
#floyd warshall
for k in range(1,n+1):
for i in range(1,n+1):
for j in range(1,n+1):
#자기 자신을 제외하고 승패 여부를 알 수 없는 경우
if(i!=j and graph[i][j] == 0):
if (graph[i][k] == 1 and graph[k][j] == 1):
#삼단논법 마냥 가능하다면
graph[i][j] = 1
elif(graph[i][k] == -1 and graph[k][j] == -1):
graph[i][j] = -1
#승패를 확연하게 알 수 있는 것이 왜 이기고 지기고 모두 명확해야하는지 아직 이해하지 못함
for i in range(1,n+1):
if graph[i][1:].count(0) == 1:
answer+=1
return answer
リファレンスReference
この問題について(プログラマランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@yoon_s_whan/프로그래머스순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol