주어진 배열이 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)
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 2583. 영역구하기 (0) | 2021.03.25 |
---|---|
[백준 알고리즘 ] 7569. 토마토 (0) | 2021.03.23 |
[백준 알고리즘] 6603.로또 - 조합 (0) | 2021.03.21 |
[백준 알고리즘] 2309.일곱난쟁이 - 부분집합의 합(조합) (0) | 2021.03.21 |
[백준 알고리즘] 15655. N과 M (6) - 조합 (0) | 2021.03.20 |