작성
·
244
·
수정됨
0
안녕하세요, 강사님!
강사님 풀이법 외에 제 코드로 풀면 어느 부분이 문제인지 알고 싶습니다.
import sys
sys.stdin=open("input.txt", "r")
#좌, 우를 우선 탐색하도록 설정
dx=[0,0,1,-1]
dy=[-1,1,0,0]
def DFS(x,y):
#특정 지점(2)에 도착하면 출발점 반환
if x==n-1 and board[x][y]==2:
print(start)
else:
for i in range(4):
xx=x+dx[i]
yy=y+dy[i]
if 0<=xx<n and 0<=yy<n and board[xx][yy]==1:
board[xx][yy]=0
DFS(xx,yy)
board[xx][yy]=1
if __name__=="__main__":
n=10
board=[list(map(int, input().split())) for _ in range(n)]
# 값이 1인 출발점을 찾기
for j in range(n):
if board[0][j]==1:
start=j
DFS(0,j)
답변 1
0
안녕하세요^^
0번 행에서 1을 발견해서 아래로 내려가는 사다리 타기를 하려면 4뱡향 탐색이 아니라 영상의 방법처럼 현재지점의 왼쪽, 오른쪽 , 아래 중 하나로만 이동해서 n-1행까지 가야 합니다. 그리고 n-1행으로 갔을때 그때 그 지점이 2가 아닐 경우 재귀를 종료해야 하고, 다시 0번 행에서 1을 발견해 재귀호출의 다시 시작해야 합니다.
영상의 방법처럼 n-1행에서 2를 발견하고 위로 올라가는 방법이 코드의 간결성이나 시간복잡도 측면에서 매우 좋습니다. 영상의 방법을 추천합니다.