인프런 커뮤니티 질문&답변

16wjdekdms님의 프로필 이미지
16wjdekdms

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-Q

2-Q 질문있습니다.

작성

·

32

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

go 함수에서 계속 탐색을 하다가 처음으로 1을 만나면 그 좌표를 넣고 멈추게 되면 가장자리에 있는 모든 1의 좌표가 v에 담기는게 아니라 그냥 처음으로 만난 좌표 1개만 v에 담기게 되는거 아닌가요? 어떻게 go 함수가 지울 모든 치즈 좌표가 담기게 되는지 이해가 안 됩니다..ㅜ

답변 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 함수의 특정 동작 방식을 더 잘 이해하는 데 도움을 줄 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

16wjdekdms님의 프로필 이미지
16wjdekdms

작성한 질문수

질문하기