문제링크:https://www.acmicpc.net/problem/10971
import sys
input = sys.stdin.readline
n = int(input())
costs = [list(map(int, input().split())) for _ in range(n)]
visited = [0] * n # 방문했는지 안했는지
sum_cost = 0 # 방문비용 합
ans = sys.maxsize
def dfs(depth, x):
global sum_cost, ans
if depth == n - 1: # 종료 조건
if costs[x][0]:
sum_cost += costs[x][0]
if sum_cost < ans: # 최소값 비교
ans = sum_cost
sum_cost -= costs[x][0]
return
for i in range(1, n):
if visited[i] == 0 and costs[x][i]: # 방문 안한 도시 일떄
visited[i] = 1 # 방문 체크
sum_cost += costs[x][i] # 방문 비용 합치기
dfs(depth + 1, i) # 재귀
visited[i] = 0 # 재귀가 끝나면 초기화
sum_cost -= costs[x][i] # 재귀가 끝나면 초기화
dfs(0, 0)
print(ans)
'Algorithm > 백준(파이썬)' 카테고리의 다른 글
백준 2470 파이썬(Python) 문제풀이 두 용액 (0) | 2023.04.15 |
---|---|
백준 2110 파이썬(Python) 문제풀이 공유기 설치 (0) | 2023.04.15 |
백준 10819 파이썬(Python) 문제풀이 차이를 최대로 (0) | 2023.04.12 |
백준 1074 파이썬(Python) 문제풀이 Z (0) | 2023.04.12 |
백준 9663 파이썬(Python) 문제풀이 N-Queen(N퀸) (0) | 2023.04.12 |