# 방향 벡터 dx = [1, 0] dy = [0, 1] # 오른쪽 아래까지 이동하는 함수 ! def gogo(x, y, total): global answer if answer < total: # 이미 합이 크다면 가볼 필요 없어 return if x == y == n-1: # 오른쪽 아래까지 왔다면 if total < answer: # 지금까지 지나온 길의 합이 answer에 들어있는 값보다 작은 경우 갱신 answer = total return for i in range(2): # 오른쪽, 아래 이동 nx = x + dx[i] ny = y + dy[i] if nx <= n-1 and ny <= n-1: # 주어진 범위 안에 있어야해 gogo(nx, ny, total+arr[ny][nx]) # 그렇다면 이동해봐 ! tc = int(input()) for idx in range(1, tc+1): n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] answer = 99999999 # 정답 초기화 gogo(0, 0, arr[0][0]) print('#{} {}'.format(idx, answer))
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[Python] 5189. 전자카트 (0) | 2021.10.03 |
---|---|
[Python] 1244. 최대 상금 (1) | 2021.10.01 |
[Python] 4366. 정식이의 은행업무 (0) | 2021.09.30 |
[Python] 10726. 이진수 표현 (0) | 2021.09.30 |
[Python] 1242. 암호 코드 스캔 (0) | 2021.09.30 |