알고리즘 문제 풀기/백준(Baekjoon)

[백준 알고리즘] 3980. 선발명단 - 파이썬

hibscus 2021. 3. 23. 09:16

 

 

 

주어진 배열이 2차배열이라 check도 2차배열로 사용하려 했는데,

 

idx와 check의 r행이 같이 가므로 check의 인덱스를 idx로 바꿀 수 있어 더 간편하게 코드를 짤 수 있었다.

 

 

 

def get_max(idx, cur_sum):
    global max_sum
    if idx == 11:
        if cur_sum > max_sum:
            max_sum = cur_sum
        return

    for j in range(11):
        if check[j]: continue
        if sportsman[idx][j]:
            check[j] = 1
            get_max(idx+1, cur_sum+sportsman[idx][j])
            check[j] = 0


T = int(input())

for _ in range(T):
    sportsman = []
    check = [0] * 11
    max_sum = 0
    for i in range(11):
        sportsman.append(list(map(int, input().split())))
    get_max(0, 0)

    print(max_sum)