djgjdgjd   6년 전

아래 코드에서 bfs함수 while문 안에 주석처리한 부분에 반복문을 없애면 왜 결과가 틀리게 나오는 지 모르겠습니다ㅠ 구조적으로 이해가 안되네여;

kdk8361   6년 전

예를 들어보겠습니다.

queue 안에 ret 턴째에 익은 토마토 집합이 4개가 있다고 합시다.

size = q.size()이므로 7이 되며 해당 루프를 도는 동안 queue는

{ret, ret, ret, ret}

{ret, ret, ret}                                          -> q.pop

{ret, ret, ret, ret+1, ret+1, ret+1}        -> 해당 위치 주변에 익을 수 있는 토마토가 3개인 경우

{ret, ret, ret+1, ret+1, ret+1}               -> q.pop

....

{ret+1, ..... ret+1}

다음 size는 남은 ret+1의 개수가 되겠죠?

이런식으로 진행이 됩니다. queue의 크기는 늘어가지만 우리에게 필요한건 step이 동일한 초기의 4개이므로 저런식으로 size를 이용하는 거죠.

djgjdgjd   6년 전

아ㅋㅋㅋ 네 이해했습니다 감사합니다. 근데 제가 for문을 두개를 안쓰고 하나만 써서 해결하고 싶은데 혹시 조언해주실수 있나요??

kdk8361   6년 전

check에 들렀나 안들렀나를 저장하는게 아니라 몇번째로 들렀나를 저장하는 방식으로 하시면

while(queue)

    for i=0 < 6

이런식으로 하나만 쓰실 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.