Algorithm(CodeTree, Python)/Backtracking
[코드트리] 수들 중 최솟값 최대화하기 Python
by kurooru
2023. 2. 7.
# n 입력
n = int(input())
# grid 입력
grid = [
list(map(int, input().split()))
for _ in range(n)
]
# 함수들
# get_max_min(curr_comb)
def get_max_min(curr_comb):
# curr_min
curr_min = 10001
# grid의 각 행을 돌면서
for i in range(n):
# curr_min update
curr_min = min(curr_min, grid[i][curr_comb[i]])
# 반환
return curr_min
# simulate(curr_idx)
def simulate(curr_idx):
# 전역 변수 선언
global max_min
# 종료조건
if curr_idx == n:
# max_min update
max_min = max(max_min, get_max_min(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_min
max_min = 0
# comb, visited
comb, visited = [], [False for _ in range(n+1)]
# simulate()
simulate(0)
# 출력
print(max_min)