(SW 문제해결 기본 - Stack2) SWEA 4881 - 배열 최소 합
08 Mar 2019 | Algorithm SWEA문제
- SWEA 4880 - [S/W 문제해결 기본] Stack2 -배열 최소 합
- 문제링크
- 문제의 저작권은 SW Expert Academy에 있습니다.
나의 코드
def MyCalc(y):
global sub_result, result
if result < sub_result:
return
if y == N:
if sub_result < result:
result = sub_result
return
for x in range(N):
if not visited[x]:
visited[x] = True
sub_result += lst[y][x]
MyCalc(y+1)
visited[x] = False
sub_result -= lst[y][x]
TC = int(input())
for tc in range(1, TC+1):
N = int(input())
lst = [list(map(int, input().split())) for _ in range(N)]
visited = [0] * N
sub_result, result = 0, 987654321
MyCalc(0)
print(f'#{tc} {result}')
- backtracking 관련하여 풀었던 첫번째 문제였다. DFS와 상당부분 유사하나, 경로 탐색후 return 조건이 만족될 시,
visited[x] = False
&sub_result -= lst[y][x]
처럼 방문했던 경로나 값을 초기화 해주는 부분이 많이 달랐다. 이부분은 많은 연습이 필요할 듯 하다.
Comments