Algorithm(CodeTree, Python)/Backtracking
[코드트리] 수들의 합 최대화하기 Python
kurooru
2023. 2. 7. 12:45
# n 입력
n = int(input())
# grid 입력
grid = [
list(map(int, input().split()))
for _ in range(n)
]
# 함수들
# get_max_sum(curr_comb)
def get_max_sum(curr_comb):
# curr_sum
curr_sum = 0
for i in range(n):
curr_sum += grid[i][curr_comb[i]]
# 반환
return curr_sum
# simulate(curr_idx)
def simulate(curr_idx):
# 전역 변수 선언
global max_sum
# 종료조건
if curr_idx == n:
# max_sum update
max_sum = max(max_sum, get_max_sum(comb))
return
# 넣어주기
for i in range(n):
if visited[i]:
continue
comb.append(i)
visited[i] = True
simulate(curr_idx + 1)
comb.pop()
visited[i] = False
# 설계
# max_sum
max_sum = 0
# comb, visited
comb, visited = [], [False for _ in range(n+1)]
# simulate
simulate(0)
# 출력
print(max_sum)