SWEA 전자카트

청천·2022년 9월 22일
0

백준

목록 보기
22/41

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
표 이해가 많이 힘들었던 문제

def recur(cur, total):
    global ans
    if cur == N:      	# 마지막 위치에서 0까지 이동
        ans = min(ans, total + arr[p1[N-1]][0])
        return
    for i in range(N):
        if visited[i]: continue
        visited[i] = 1
        p1.append(i)			#  0 - 1 - 2 - 0 이런식으로 이동
        						#  arr[p1[cur-1][p1[cur]]
                                	       0 - 1
                                           1 - 2
                                           # 이런 느낌
        recur(cur + 1, total + arr[p1[cur-1]][p1[cur]])
        p1.pop()
        visited[i] = 0

for t in range(int(input())):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]
    visited = [0] * N
    visited[0] = 1
    ans = 1<<31

    p1 = [0] # 순회 하는 인덱스 저장 
    recur(1, 0)

    print(f'#{t+1} {ans}')

0개의 댓글