소스코드
def dfs(x, y, d, s):
global ans
if d == K:
ans = max(ans, s)
return
else:
for i in range(x, N):
for j in range(y if i == x else 0, M):
if [i, j] not in q:
if ([i + 1, j] not in q) and ([i - 1, j] not in q) and ([i, j + 1] not in q) and ([i, j - 1] not in q):
q.append([i, j])
dfs(i, j, d + 1, s + a[i][j])
q.pop()
N, M, K = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(N)]
q = []
ans = -1e10
dfs(0, 0, 0, 0)
print(ans)
알고리즘
for 문을 돌면서 q안에 위치를 삽입한다.
만약 q에 현재 위치가 있지 않고 주변도 없으면 삽입하고 재귀 호출
dfs문제인데 너무 어려웠던것 같다.
'Coding test' 카테고리의 다른 글
[백준/12845/파이썬] 모두의 마블 (0) | 2023.02.28 |
---|---|
[백준/11047/파이썬] 동전 (0) | 2023.02.28 |
[백준/15655/파이썬] N과 M (6) (0) | 2023.02.23 |
[백준/15654/파이썬] N과 M (5) (0) | 2023.02.21 |
[백준/15652/파이썬] N과 M (4) (0) | 2023.02.20 |