python-for-coding-test
python-for-coding-test copied to clipboard
음료수 얼려먹기 DFS 실전문제
안녕하세요. 코딩 공부를 시작한지 얼마 안된 코린이 입니다. 질문이 수준이 낮아도 이해 부닥드립니다..! 답안 예시에서
def dfs(x,y): if x <= -1 or x >= n or y <=-1 or y >= m: (첫번째 질문: -1보다 작거나 같을때는 범위를 벗어나는게 이해가 가는데 여기서 x>=n or y >=m, x,y가 n,m과 같을때도 범위를 벗어나는건가요? 클때는 벗어나느걸 알겠는데 같을때도 벗어나는게 이해가 가지않습니다.) return False if graph[x][y] == 0: graph == 1 . . . return true return false (두번째 질문: 여기서 return false 는 무엇을 의미하는 건가요? 어떻게 해석해야 할 지 이해가 가지 않습니다..ㅜ
안녕하세요! 저도 교재로 공부하는 사람인데 제가 아는 부분이 있어서 조심스럽게 답변을 남깁니다!
-
첫 번째 질문: 우선
n
,m
이 입력받아서 2차원 리스트의 맵을 만들게 될 때 가장 마지막 칸의 인덱스 번호는 각각n-1
,m-1
이 되게 됩니다!(시작 칸이 0번 인덱스부터 시작하기 때문이에요!) 그래서 마지막 칸이 각각n-1
,m-1
이기 때문에x
가n
이랑 같거나y
가m
이랑 같게 된다는 것은 맵을 벗어나게 됩니다. -
두 번째 질문: 마지막
return False
위에 2개의if
구문 중 첫 번째if
구문은 첫 번째 질문에서 해주셨던 것처럼 좌표가 맵을 벗어난 경우이고 두 번째if
구문은 방문하지 않은 노드(값이 0)를 DFS하게 됩니다. 위 2개의if
구문 모두 어쨋든return
을 하기 때문에 위 2개의 조건 중 하나라도 만족하게 되면 그 자체로 함수는 return을 보고 종료를 하게되죠! 결국 질문해주신 마지막return False
부분은 2개의if
구문 모두를 만족하지 않는 즉, 노드값이 1인 칸막이를 만나게 된다는 것을 의미하므로False
를 반환하도록 되는 것입니다!
혹여나 잘 이해가 안가신다면 답글 부탁드려요! ㅜㅜ 저도 아직 알고리즘은 미숙해서 부족한 답변이었을 수도 있습니다!
안녕하세요! 저도 교재로 공부하는 사람인데 제가 아는 부분이 있어서 조심스럽게 답변을 남깁니다!
- 첫 번째 질문: 우선
n
,m
이 입력받아서 2차원 리스트의 맵을 만들게 될 때 가장 마지막 칸의 인덱스 번호는 각각n-1
,m-1
이 되게 됩니다!(시작 칸이 0번 인덱스부터 시작하기 때문이에요!) 그래서 마지막 칸이 각각n-1
,m-1
이기 때문에x
가n
이랑 같거나y
가m
이랑 같게 된다는 것은 맵을 벗어나게 됩니다.- 두 번째 질문: 마지막
return False
위에 2개의if
구문 중 첫 번째if
구문은 첫 번째 질문에서 해주셨던 것처럼 좌표가 맵을 벗어난 경우이고 두 번째if
구문은 방문하지 않은 노드(값이 0)를 DFS하게 됩니다. 위 2개의if
구문 모두 어쨋든return
을 하기 때문에 위 2개의 조건 중 하나라도 만족하게 되면 그 자체로 함수는 return을 보고 종료를 하게되죠! 결국 질문해주신 마지막return False
부분은 2개의if
구문 모두를 만족하지 않는 즉, 노드값이 1인 칸막이를 만나게 된다는 것을 의미하므로False
를 반환하도록 되는 것입니다!혹여나 잘 이해가 안가신다면 답글 부탁드려요! ㅜㅜ 저도 아직 알고리즘은 미숙해서 부족한 답변이었을 수도 있습니다!
답변 정말 감사합니다! 첫번째 질문은 이해했습니다. 혹 그럼 두번째 질문에서 코드를 else: return False 라 써도되나요??
@pigpiano 넵! 그래도 될 것 같습니다! 제가 책에 있는 2가지 테스트 케이스 둘 다 @pigpiano 님께서 말씀해주신 대로 바꾸어 보았는데 시간적으로나 정답으로나 동일한 결과를 냅니다!
@pigpiano 넵! 그래도 될 것 같습니다! 제가 책에 있는 2가지 테스트 케이스 둘 다 @pigpiano 님께서 말씀해주신 대로 바꾸어 보았는데 시간적으로나 정답으로나 동일한 결과를 냅니다!
감사합니다! 덕분에 이해했습니다ㅎ