BOJ 14889開始とリンク


質問する


BOJ 14889開始とリンク
銀III|白駿14889|Python 3 Python池

アルゴリズム#アルゴリズム#

  • Python itertoolsを使用して、可能なチームのすべての組合せリストを生成します.
  • 各グループは、A、Bグループの能力値の和を計算する.
  • Aは、Bグループの能力値のプロトコルの違いの中で最も高い値を格納する.
  • 最高値
  • を出力します.
  • コード#コード#

    import sys
    from itertools import combinations
    
    input = sys.stdin.readline
    
    N = int(input())
    # 능력치 정보
    table = [list(map(int, input().split())) for _ in range(N)]
    nums = [i for i in range(N)]
    
    # 가능한 팀의 모든 조합
    combs = [i for i in list(combinations(nums, N // 2))]
    
    minv = sys.maxsize
    
    for i in range(len(combs) // 2):
        teamA = combs[i]
        teamB = combs[-1 - i]
    	
        # A팀 가능한 조합의 능력치 합
        scoreA = 0
        for j in range(N // 2):
            for k in teamA:
                scoreA += table[teamA[j]][k]
    	
        # B팀 가능한 조합의 능력치 합
        scoreB = 0
        for j in range(N // 2):
            for k in teamB:
                scoreB += table[teamB[j]][k]
    	
        # 두 팀 능력치 합의 최솟값을 저장
        minv = min(minv, abs(scoreA - scoreB))
    
    print(minv)

    結果