작성
·
32
답변 2
0
안녕하세요 ㅎㅎ
go 함수에서 계속 탐색을 하다가 처음으로 1을 만나면 그 좌표를 넣고 멈추게 되면 가장자리에 있는 모든 1의 좌표가 v에 담기는게 아니라 그냥 처음으로 만난 좌표 1개만 v에 담기게 되는거 아닌가요?
>> 네 1을 만나면 종료됩니다만 그 전에 1이 아닌 영역에서는 go함수가 많이 발동되기 때문에 많이 담기게 됩니다. 다음과 같이 go 함수에 디버깅 코드를 추가하고 -> 다시 실행해보시겠어요?
void go(int y,int x){
visited[y][x] = 1;
cout << y << " : " << x << "\n";
if(a[y][x] == 1){
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
16wjdekdms님의 질문과 관련하여, “모범 답안 코드 로직에 대한 질문입니다.“라는 제목의 질문이 이전에 있었습니다. 해당 질문에서도 go
함수와 그것이 어떻게 치즈의 가장자리를 인식하고 이를 배열 v
에 담는지에 대한 설명이 요청되었습니다.
질문자님께 도움이 될 수 있는 링크는 다음과 같습니다:
- 모범 답안 코드 로직에 대한 질문입니다.
이 질문에서도 go
함수가 처음으로 1
을 만났을 때 해당 좌표를 담고 멈추는 로직에 대해 논의되었습니다. 답변에서는 치즈 문제에서 판의 가장자리는 무조건 비어있다는 것과, 가장자리부터 시작해 바깥쪽부터 탐색하게 됨이 자명하다는 점, 그리고 1
을 만나면 더 이상 깊이 우선 탐색(DFS)를 이어나가지 않고 종료하여 바깥쪽만 제거하는 로직으로 동작한다는 설명이 포함되어 있습니다.
go
함수의 로직이 어떻게 모든 외곽 치즈를 배열에 담는지 궁금하실 때, 이 답변이 상세한 설명과 함께 도움이 되기를 바랍니다. 링크된 답변은 go
함수의 특정 동작 방식을 더 잘 이해하는 데 도움을 줄 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.