recursion 3

[Python] 5189. 전자카트

def recur(cnt, now, total): #(횟수, 현재위치, 현재까지 배터리 소비량) global answer if cnt == n: # n회차이면 끝 total += arr[now][0] # 마지막 사무실에 돌아오는 소비량 더해주기 if total < answer: # 총 소비량이 answer에 있는 값보다 작다면 갱신 answer = total return if answer < total: # 이미 소비량 answer보다 크다면 돌아가 return for next in range(1, n): # arr[i][i] 이면 해당 값은 0이므로, now 와 next가 같지않고, 방문한 곳이 아니라면 if now != next and not visited[next]: visited[next] = T..

[Python] 1244. 최대 상금

def recur(cnt, n): global answer if cnt == n: # n만큼 바꿔줬다면 temp = ''.join(board) # 문자열로 바꿔주기 if answer < temp: # answer에 저장되어있는 값보다 크다면 갱신 answer = temp return for i in range(len_b): for j in range(i+1, len_b): # 현재 자리(i)의 다음자리부터 비교 board[i], board[j] = board[j], board[i] # 바꾸기 temp = ''.join(board) # 문자열로 바꿔 if visited.get((temp, cnt), 1): # 중복 아니라면 visited[(temp, cnt)] = 0 # visited에 저장 recur(c..

[Python] 5188. 최소합

# 방향 벡터 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