はじめに
このシリーズではレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】でまとめられている100問をPythonで解いています。
問題
ポイント
この問題は全探索を用いて解くことができます。
全ての曲の選び方を試して、その場合の生徒のスコアを計算し、最大値を出力します。
コード
def main():
N, M = map(int, input().split(" "))
scores_list = []
sums_list = []
# 各生徒のスコアリスト作成
for i in range(N):
scores = [int(j) for j in input().split(" ")]
scores_list.append(scores)
# 曲の選び方のパターンを全探索
for i in range(M-1):
for j in range(i+1, M):
scores_sum = 0 # 選曲パターンにおける生徒スコアの合計
for scores in scores_list:
if scores[i] >= scores[j]: # 点数が高い方を採用
scores_sum += scores[i]
else:
scores_sum += scores[j]
sums_list.append(scores_sum)
print(max(sums_list))
if __name__ == '__main__':
main()