5427번 - 불
12%에서 계속 시간초과가 나오네요ㅠㅠ 원형 큐랑 BFS 사용했습니다.
큐를 두 개 만들어서 사람이랑 불이랑 따로 넣어줬고, 로직은
------**들여쓰기가 적용이 안되네요ㅠㅠ 코드에 주석으로 설명 추가 하겠습니다!!**----
while(사람 큐, 불 큐 둘 다 안비어 있는 동안) {
사람큐에서 deque << (처음에 입력 받았을 떄 불이 999개 있고 사람은 가장자리에 있어서 바로 탈출가 능한 경우를 위해서 처음에 체크해줬습니다.)
if(deque한 것이 탈출 가능한 곳이면)
지금까지 움직인 횟수 리턴
else
다시 사람큐에 넣음
fsize = 불 큐에 있는 원소의 수
while(size--) {
불큐에 있는 것을 꺼내서 동서남북 확인. 만약 불이 갈 수 있는 곳이면(배열 범위 안에있고, 벽이 아니고, 불이 없는 자리)
그 자리를 불로 바꿔주고 불 큐에 넣음.
}
sgsize = 사람 큐에 있는 원소의 수
while(sgsize--) {
사람 큐에 있는 것을 꺼내서 그 곳이 탈출 가능한 곳인지 확인. 가능한 곳이면 움직인 회수 리턴
탈출 가능지가 아닌 경우 위와 마찬가지로 동서남북 확인. 갈 수 있는 곳이면(배열범위 내에서 벽 이 아니고 이미 간 곳이 아닌 자리)
그 자리를 방문표시(. 에서 ?로 바꿔줬습니다)하고 큐에 넣음. 그리고 flag를 1로 바꿔줌
사람큐를 다 돌았는데 flag가 0이면 더이상 갈 곳이 없다는 소리이므로 -1 리턴
flag가 1이면 다시 0으로 바꾸고 움직인 횟수 1 증가
로직에 문제가 있는건지 예제랑 게시판에있는 반례들 다 잘 맞는데 12%에서 계속 안되네요ㅠㅠ 선배님들 답변 해주시면 감사하겠습니다.
댓글을 작성하려면 로그인해야 합니다.
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%에서 계속 안되네요ㅠㅠ 선배님들 답변 해주시면 감사하겠습니다.