22034-ランキング
8459 ワード
◾ランキング:プログラマーLEVEL 3
質問する
ボクシングの試合にはn人のボクサーが参加し、それぞれ1番からn番まで参加した.ボクシングの試合は1対1で行われ、A選手の実力がB選手より優れていれば、A選手はいつもB選手に勝つ.審判は与えられた試合の結果に基づいて選手をランキングしたいと思っている.しかし、いくつかの試合結果を失ったため、正確な順位はつけられなかった.
アスリートの数n,試合結果の2次元配列結果をパラメータとして与える場合は,正確に並べ替えられるアスリートの数を返すために解関数を記述してください.
入力
しゅつりょく
I/O例
nresultsreturn5[[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]2
のり付け
1.解説
2.プログラム
質問です。
◾ランキング:プログラマーLEVEL 3
質問する
ボクシングの試合にはn人のボクサーが参加し、それぞれ1番からn番まで参加した.ボクシングの試合は1対1で行われ、A選手の実力がB選手より優れていれば、A選手はいつもB選手に勝つ.審判は与えられた試合の結果に基づいて選手をランキングしたいと思っている.しかし、いくつかの試合結果を失ったため、正確な順位はつけられなかった.
アスリートの数n,試合結果の2次元配列結果をパラメータとして与える場合は,正確に並べ替えられるアスリートの数を返すために解関数を記述してください.
入力
しゅつりょく
I/O例
nresultsreturn5[[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]2
のり付け
1.解説
2.プログラム
コード#コード#
def solution(n, results):
answer = 0
arr = [[0] * (n+1) for i in range(n+1)]for a, b in results:
arr[a][b] = 1
arr[b][a] = -1
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
if i == j or arr[i][j] in [1,-1]:
continue
if arr[i][k] == arr[k][j] == 1:
arr[i][j] = 1
arr[j][i] = arr[k][i] = arr[j][k] = -1
for row in arr:
if row.count(0) == 2:
answer += 1
return answer
for a, b in results:
arr[a][b] = 1
arr[b][a] = -1
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
if i == j or arr[i][j] in [1,-1]:
continue
if arr[i][k] == arr[k][j] == 1:
arr[i][j] = 1
arr[j][i] = arr[k][i] = arr[j][k] = -1
for row in arr:
if row.count(0) == 2:
answer += 1
return answer
# 코드
def solution(n, results):
answer = 0
wins = {i : set() for i in range(1, n+1)}
loses = {i : set() for i in range(1, n+1)}
for a, b in results:
wins[a].add(b)
loses[b].add(a)
for i in range(1, n+1):
for loser in wins[i]:
loses[loser] = loses[loser].union(loses[i])
for winner in loses[i]:
wins[winner] = wins[winner].union(wins[i])
for i in range(1, n+1):
if (len(wins[i]) + len(loses[i])) == (n-1):
answer += 1
return answer
Reference
この問題について(22034-ランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@skarb4788/220324-순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol