인프런 커뮤니티 질문&답변
3-I 궁금한점
해결된 질문
작성
·
31
·
수정됨
답변 2
0
안녕하세요 ㅎㅎ
수빈이는 2초에 2라는 지점에 온뒤, 4초에 2라는 지점에 다시 올 수 있습니다. 2 -> 3 -> 2가 가능하죠.
만약 동생이 4초에 해당 지점에 온다면 둘이 서로 만날 수 있습니다.
그러나 만약 수빈이가 3초에 2라는 지점에 왔다면 5초, 7초, 9초에 해당 지점에 다시올 수 있고 4초에는 올 수 없습니다.
즉, 짝수 초에 해당 지점에 온 수빈이는 다시 짝수초에 해당 지점 방문이 가능하고, 홀수 초에 해당 지점에 온 수빈이는 다시 홀수초에 해당 지점 방문이 가능하기 때문에 해당 부분을 나눠놨습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. Vanellope i님께서 작성하신 질문에 대해 답변드리겠습니다.
1. 홀짝을 사용하는 이유:
홀수와 짝수 상태로 나눠서 방문 처리를 하는 이유는 시간의 경과에 따른 수빈이의 위치 변화와 동생의 위치 변화를 구분하기 위해서입니다. 수빈이가 어떤 위치에 방문했을 때, 그 시점에서의 시간의 홀짝성을 고려하여 다른 상태로 넘어가게 하기 위함입니다. 즉, 특정 시간에 수빈이와 동생이 만날 수 있는지 여부를 확인하기 위해, 시간의 홀짝성을 상태로 나눠 관리하게 됩니다.
이 방식은 수빈이가 움직일 때 매번 이동할 수 있는 방법이 제한되어 있지 않기 때문에 동생이 수빈이보다 먼저 도착할 수도 있고, 나중에 도착할 수도 있습니다. 이렇게 접근하면, 동생과 수빈이가 이동하는 시간을 감안하여 수빈이가 특정 시간 홀수나 짝수일 때만 이동할 수 있게끔 하는 전략입니다.
2. int qSize = q.size();의 사용 이유:
qSize를 사용하는 것은 현재 레벨에서의 노드 개수를 미리 결정해 두어, 현재 큐에 있는 모든 노드를 순회하되, 새롭게 추가된 노드까지 무한정 순회하지 않도록 하는 방법입니다. 큐의 사이즈를 매번 확인하여 순회하게 되면, 중간에 추가되는 노드 때문에 일관되지 않은 결과가 발생할 수 있습니다.
따라서 for(int i = 0; i < qSize; i++)를 사용하여 현재 큐에 있는 노드만 순회함으로써, 노드 탐색이 결정적인 단계 안에서 끝날 수 있도록 설계한 것입니다. 이는 너비 우선 탐색(BFS)에서 자주 사용하는 패턴이며, 큐의 현재 레벨에 있는 모든 노드를 탐색함으로써 문제를 단계적으로 풀 수 있습니다.
관련된 답변을 보시려면 아래의 링크를 참조해 주세요:
- 3-I 추가 질문있습니다 :)
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





