사다리타기질문
183
작성한 질문수 5
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
import sys
def DFS(L,x,y):
global cnt
if a[x][y]==2:
print(cnt)
sys.exit(0)
else:
if L==0:
for i in range(10):
cnt=i
ch[x][y]=1
DFS(L+1,x,y+i)
ch[x][y]=0
else:
path_count=0
next_path=-1
for j in range(3):
xx=x+dx[j]
yy=y+dy[j]
if 0<=xx<10 and 0<=yy<10 and a[xx][yy]==1 and ch[xx][yy]==0 :
next_path=j
path_count+=1
#갈 수 있는 방향이 아래로 하나만 있는 경우
if path_count==1:
ch[xx][yy]=1
DFS(L+1,x+dx[next_path],y+dy[next_path])
ch[xx][yy]=0
#여러 방향으로 이동이 가능
elif path_count>1:
for k in range(3):
xx=x+dx[k]
yy=y+dy[k]
if 0<=xx<10 and 0<=yy<10 and a[xx][yy]==1 and ch[xx][yy]==0 :
ch[xx][yy]=1
DFS(L+1,xx,yy)
ch[xx][yy]=0
if __name__=="__main__":
a=[list(map(int,input().split())) for _ in range(10)]
dy=[1,-1,0]#우 좌 히
dx=[0,0,1]
cnt=0
ch=[[0]*10 for _ in range(10)]
DFS(0,0,0)
저는 up-bottom형식으로 탐색을 했는데 출력값이 아예나오지 않습니다. 어느 부분이 잘못되었는지 알 수 있을까요? ㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
tkv00님, 사다리타기 문제에서 출력값이 나오지 않는 문제를 겪고 계신 것 같네요. 주신 코드를 살펴보았을 때, 몇 가지 문제가 있을 수 있으니 차례대로 해결해 봅시다.
sys.exit(0)을 사용하면 프로그램이 바로 종료되어 버립니다. 따라서sys.exit(0)을 호출하기 전에cnt값이 정상적으로 설정되었는지 확인해야 합니다.
for i in range(10)루프 내에서cnt=i를 설정하고 있지만, 사다리타기의 경우 특정 열에서만 시작하는 것이 아니라 주어진 시작점에서 탐색을 시작해야 합니다.cnt를 열 인덱스로 설정하는 것이 적절한지 다시 생각해 보셔야 할 것 같습니다.
- 초기 DFS 호출 시, 시작점에 대한 정확한 좌표가 주어져야 합니다. 사다리타기의 시작점이
(0,0)인지 확인하셔야 하며, 문제에서 다른 좌표가 주어진다면 그에 맞게 수정해야 합니다.
path_count와next_path를 사용하여 이동 가능한 경로를 파악하는 로직이 있는데, 이 부분에서x+dx[next_path],y+dy[next_path]를 사용하기 전에next_path값이 유효한지 확인하는 부분이 누락되어 있습니다.next_path가 유효한지 여부를 체크하고 사용해야 합니다.
이와 같은 점들을 고려하여 코드를 다시 검토하시고 디버깅을 해 보시기 바랍니다.
사다리타기 문제의 경우 이전 경로를 확인하여 사이클이 생기지 않도록 주의하면서 탐색해야 하므로, ch 배열을 사용하여 이미 방문한 경로를 체크하는 것이 중요합니다.
그리고 사다리타기 문제에 대한 자세한 알고리즘이나 예시가 필요하면 인프런의 알고리즘 강의를 참고하시면 도움이 될 수 있습니다.
추가적으로 이해가 잘 되지 않는 부분이나, 더 궁금한 점이 있으시면 질문 주시기 바랍니다.
감사합니다.
기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.
1
78
2
스택에서 ')'을 만나는 경우
0
79
3
문제가 어디있나요?
0
67
2
변수 or 함수명
0
61
1
침몰하는 타이타닉 문제 질문입니다
0
57
1
AA.py 책점 에러
0
59
1
오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.
0
111
2
5.동전분배하기 문제 밑에코드도 정답이될까요?
0
110
1
아나그램 비교 코드
0
116
2
AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.
0
161
2
문제 링크가있나여?
0
147
2
채점기 Time Limit Exceeded 오류 문의
1
165
2
동적계획법은 사용하는 문제
0
126
2
제 코드 좀 봐주세요
0
148
1
예외가 존재할 가능성?
0
97
1
3번이 안풀립니다
0
93
0
5번 틀림
0
114
0
오류원인?
0
98
0
리스트 선언
0
106
1
침몰하는 타이타닉(그리디) 문제 질문
0
109
1
알고리즘
0
69
1
코딩테스트
0
92
1
DFS 순서 질문드립니다.
0
128
2
left, right를 사용한 풀이법에 대한 질문입니다
0
91
1





