import sys
sys.setrecursionlimit(10000)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x, y):
if grid[x][y] != 4:
grid[x][y] = 4
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx<0 or nx>= 16 or ny<0 or ny>=16:
continue
else:
if grid[nx][ny] != 1 or grid[nx][ny] != 4: # 여기가 틀렸다!!!!!!!!!!!
dfs(nx, ny)
i = int(input())
grid = [list(map(int,list(input()))) for _ in range(16)]
# visited = [False for _ in range(16 for _ in range(16))]
for row in range(16):
for col in range(16):
if grid[row][col] == 2:
start_row, start_col = row, col
if grid[row][col] == 3:
end_row, end_col = row, col
dfs(start_row, start_col)
if grid[end_row][end_col] == 4:
answer = 1
else:
answer = 0
print(f'#{i} {answer}')
방문했거나(4) 벽(1)이면 안돌아야되는데
if grid[nx][ny] != 1 or grid[nx][ny] != 4: # 여기가 틀렸다!!!!!!!!!!!
이 부분에서 or로 엮어줘서 틀림
걍 and로 바꿔주면 된다.
import sys
sys.setrecursionlimit(10000)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x, y):
# print('x, y', x, y )
if grid[x][y] != 4:
grid[x][y] = 4
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx<0 or nx>= 16 or ny<0 or ny>=16:
continue
elif grid[nx][ny] == 1 or grid[nx][ny] == 4:
continue
else:
dfs(nx, ny)
i = int(input())
grid = [list(map(int,list(input()))) for _ in range(16)]
# visited = [False for _ in range(16 for _ in range(16))]
for row in range(16):
for col in range(16):
if grid[row][col] == 2:
start_row, start_col = row, col
if grid[row][col] == 3:
end_row, end_col = row, col
print(start_row, start_col)
print(end_row, end_col)
dfs(start_row, start_col)
if grid[end_row][end_col] == 4:
answer = 1
else:
answer = 0
print(f'#{i} {answer}')