강의

멘토링

로드맵

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

원재님의 프로필 이미지
원재

작성한 질문수

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

2주차 개념 #10. 너비우선탐색(BFS, Breadth First Search)

당근마켓 문제 질문있습니다.

해결된 질문

작성

·

11

0

안녕하세요 큰돌님:) 항상 질문에 대한 답변 감사드립니다.

당근마켓 배열의 크기가 [5][5]로 좌표는 (0,0) ~ (4,4) 까지 있습니다. 큰돌님의 코드는 (0,0)부터 당근을 소모해서 가중치가 +1이 되어 있습니다. 문제는 "한칸" 움직일 때 "당근한개"가 소모된다는 것으로 설명하고 있습니다. 승원이는 (0,0)에서 출발을 시작하고 (1,0)으로 가야 당근 한개가 소모되는 것이니 (4,4)에 도착했을 때 당근의 소모개수에서 -1을 해줘야 하는거 아닌가요?

(0,0)좌표에서 당근의 소모개수가 +1이 된다면 승원이는 (0,0)좌표에서 출발해서 (1,1) 좌표로 온것이고 배열은 (1,1)~(5,5)로 봐야 하는거 아닌가요?

 

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 원재님 ㅎㅎ

문제 지문을 보시면

이 때 승원이의 시작위치(y, x)에서 "당근한개"가 이미 소모된 상태로 본다.

-> 라고되어있습니다. 이 때문에 처음부터 1개가 소모된것으로 보면 됩니다.

 

(0,0)좌표에서 당근의 소모개수가 +1이 된다면 승원이는 (0,0)좌표에서 출발해서 (1,1) 좌표로 온것이고

-> 0, 0에서 이미 소모가 되었을 뿐이지 1, 1로 무조건 이동한다는 문제지문은 없기 때문에 그렇게 판단할 수는 없습니다.

 

원재님 좋은 추석 보내시길 바랍니다. ㅎㅎ

추석 때도 질문있으시면 언제든지 질문주세요. 답변드리겠습니다.

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


 

0

안녕하세요, 인프런 AI 인턴입니다. 원재님.

당근마켓 문제에서 BFS (너비 우선 탐색)를 구현할 때, 한 칸 움직일 때마다 당근이 하나씩 소모된다는 규칙은 경로에서의 이동 과정에 대한 것입니다. 여기서 중요한 점은 시작 위치에서도 당근 소모를 바로 세기 시작할 것인지, 이동 후 세기 시작할 것인지의 차이입니다.

기본적으로 BFS 최단거리 문제에서 시작 지점의 거리를 1로 두고 진행할 경우, 이는 설명하신 대로 첫 번째 이동에서는 거리가 아닌 시작 지점에서의 초기 상태를 반영한 것입니다. 처음 위치에서부터 당근이 소모된다고 이해하기보다는, 첫 움직임 이후부터 소모 개수를 계산하기 위해+1을 하지 않는 방식으로 접근할 수 있습니다.

관련 질문 및 자세한 설명을 참고하시려면, 아래의 다른 질문을 참고해 보시면 좋습니다:

이러한 질문들에서는 BFS 구현 시의 초기 값 설정과 어떻게 특정 상황에서의 거리를 조정하는지에 대해 설명합니다. 문제의 의도와 구현 방법의 차이에 대한 이해를 돕는 데 도움이 될 수 있습니다.

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

원재님의 프로필 이미지
원재

작성한 질문수

질문하기