📝

【Python】トーナメント優勝者

2023/08/07に公開

作るもの

対戦カード(competitions)と結果(results)を与えて、最終的なトーナメントの勝者であるチーム名を返す関数。

実装

tournament_winner.py
def tournamentWinner(competitions, results):
    dict = {}  # 勝利回数をカウントするための空の辞書を作成

    # 各競技の結果とその対戦を順番に処理
    for i, comp in enumerate(competitions):
        if results[i]:  # もしi番目の競技の結果がTrue(チーム1の勝利)なら
            dict[comp[0]] = dict.get(comp[0], 0) + 1  # チーム1の勝利回数を辞書に追加または1増やす
        else:  # もしi番目の競技の結果がFalse(チーム2の勝利)なら
            dict[comp[1]] = dict.get(comp[1], 0) + 1  # チーム2の勝利回数を辞書に追加または1増やす

    # 辞書の中で最も多く勝利したチーム名を返す
    return max(dict, key=dict.get)


# テスト
if __name__ == "__main__":
    competitions = [
        ["HTML", "Java"],
        ["Java", "Python"],
        ["Python", "HTML"],
    ]
    results = [0, 1, 1]
    print(tournamentWinner(competitions, results))

参考

https://www.algoexpert.io/questions/tournament-winner

Discussion