dlqudgus2587   4년 전

12%에서 계속 시간초과가 나오네요ㅠㅠ 원형 큐랑 BFS 사용했습니다.

큐를 두 개 만들어서 사람이랑 불이랑 따로 넣어줬고, 로직은

------**들여쓰기가 적용이 안되네요ㅠㅠ 코드에 주석으로 설명 추가 하겠습니다!!**----

while(사람 큐, 불 큐 둘 다 안비어 있는 동안) {

            사람큐에서 deque   << (처음에 입력 받았을 떄 불이 999개 있고 사람은 가장자리에 있어서 바로 탈출가                                                   능한 경우를 위해서 처음에 체크해줬습니다.)

if(deque한 것이 탈출 가능한 곳이면)

지금까지 움직인 횟수 리턴

else

다시 사람큐에 넣음

fsize = 불 큐에 있는 원소의 수

while(size--) {

불큐에 있는 것을 꺼내서 동서남북 확인. 만약 불이 갈 수 있는 곳이면(배열 범위 안에있고, 벽이    아니고, 불이 없는 자리)

그 자리를 불로 바꿔주고 불 큐에 넣음.

}

sgsize = 사람 큐에 있는 원소의 수

while(sgsize--) {

사람 큐에 있는 것을 꺼내서 그 곳이 탈출 가능한 곳인지 확인. 가능한 곳이면 움직인 회수 리턴

탈출 가능지가 아닌 경우 위와 마찬가지로 동서남북 확인. 갈 수 있는 곳이면(배열범위 내에서 벽    이 아니고 이미 간 곳이 아닌 자리)

그 자리를 방문표시(. 에서 ?로 바꿔줬습니다)하고 큐에 넣음. 그리고 flag를 1로 바꿔줌

}

사람큐를 다 돌았는데 flag가 0이면 더이상 갈 곳이 없다는 소리이므로 -1 리턴

flag가 1이면 다시 0으로 바꾸고 움직인 횟수 1 증가

}

로직에 문제가 있는건지 예제랑 게시판에있는 반례들 다 잘 맞는데 12%에서 계속 안되네요ㅠㅠ 선배님들 답변 해주시면 감사하겠습니다.

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