해결된 질문
작성
·
89
·
수정됨
답변 2
0
안녕하세요 ㅎㅎ
동생이 더 빨리 오고 수빈이가 늦게 오는 상황이 생길 수 있는 거 같은데(동생이 3초에 오고 수빈이가 5초에 온다)
-> 그런 상황이 있어도 코드내에서 체크하지 않습니다.
while(q.size()){
b += turn;
if(b > max_n)break;
if(visited[turn % 2][b]) {
ok = true;
break;
}
int qSize = q.size();
for(int i = 0; i < qSize; i++){
코드를 잠깐볼까요?
동생이 움직이면서 -> 수빈이가 움직이는 것을 체크하기 때문에 해당 부분이 발생되어도 그부분을
동생이 먼저 2초전 도착 -> 그 때의 수빈이가 온지에 대한 상태를 체크하고(visited 기준) 안왔기 때문에 continue -> 그 이후 2초뒤 수빈이가 도착하여도 해당 경우의 수는 체크하지 않게 됩니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
대기업목표님이 제기하신 수빈이와 동생의 시간 관계에 관한 질문은 알고리즘 로직상 중요한 부분입니다. 수빈이와 동생이 만나기 위해 고려해야 하는 시점이나 조건들이 혼잡할 수 있으며, 이를 올바르게 이해하고 구현하는 것이 중요합니다.
동생이 3초에 오고 수빈이가 5초에 올 수 있는 상황: 이 경우도 이론상으로는 가능합니다. 일반적으로 문제가 갖는 조건들에 따라 수빈이가 어떤 방식으로 도달하느냐에 따라 다양한 시나리오가 발생할 수 있습니다. 따라서 BFS 알고리즘에서 상태를 방문할 때, 각 상태가 “어떤 시간에” 방문했는지를 잘 기록해야 합니다. 만약 동생이 수빈이보다 더 빨리 도착하더라도, 그 이후에 수빈이가 해당 위치에 도달하는 경우가 있기 때문입니다.
위의 상황이 가능할 때 로직 종료 여부: 맞습니다. 위와 같은 상황에서는 동생이 더 빨리 도착하지만, 수빈이가 같은 위치에 도달하는 시간이 홀수와 짝수의 패턴에 따라 여전히 만남의 점이 될 수 있는 경우에는, 종료 조건에 해당하지 않을 수 있습니다. 주로 코딩 문제에서는 이와 같은 상황을 다루기 위해, 시간을 두 가지(홀수/짝수)로 나누어 관리하여 “만날 수 있는 시점”을 세밀하게 결정하게 됩니다. 따라서 종료 시점을 검토할 때 이러한 관점을 놓치지 않도록 구현하는 것이 중요합니다.
질문에서 제시한 내용은 알고리즘의 핵심적인 부분에 대한 통찰을 요구하는 것으로 보입니다. 따라서 동일한 이슈를 다룬 지식 공유자의 다른 답변을 참고하시면 추가적인 이해에 도움이 될 것 같습니다. 아래 링크에서 유사한 문제 해결 방법에 대한 내용을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.