5427번 - 불
대략적인 구조는
while(큐가 비지 않음) {
if(큐가 불일 경우) {
불이 사방으로 퍼짐
방금 퍼진 불 위치 큐에 저장
continue
}
상근이 이동
방금 기록된 상근이 위치 큐에 저장
while이 끝나도 함수가 끝나지 않은 경우 - IMPOSSIBLE
입니다.
count는 단계별로 상근이가 이동하는 경로이고,
45~46번째 줄은 상근이가 방금 있던 자리에 불이 오는 경우에 대비해서 예외처리 해놓은 겁니다.
토마토 문제도 중간까지 가고나서 시간초과 뜨던데... 제 bfs 구성에 문제가 있는 것 같습니다.
고수분들의 도움을 요청해요!! ㅠㅠ
del queue[0]은 queue.pop(0)과 똑같이 시간 복잡도가 O(N)입니다.
그래서 O(1)로 뺄 수 있는 deque를 사용하셔야 합니다
그리고 상근이가 이동할 때 범위 확인해주셔야 합니다.
반례 드립니다.
둘 다 답은 1인데 하나는 에러가 나오고, 하나는 답이 다르게 나옵니다.
답변 감사드립니다!! del의 시간복잡도를 몰랐네요 ㅠㅠ
많은 도움이 되었습니다 ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
jadebaek 5년 전
대략적인 구조는
while(큐가 비지 않음) {
if(큐가 불일 경우) {
불이 사방으로 퍼짐
방금 퍼진 불 위치 큐에 저장
continue
}
상근이 이동
방금 기록된 상근이 위치 큐에 저장
}
while이 끝나도 함수가 끝나지 않은 경우 - IMPOSSIBLE
입니다.
count는 단계별로 상근이가 이동하는 경로이고,
45~46번째 줄은 상근이가 방금 있던 자리에 불이 오는 경우에 대비해서 예외처리 해놓은 겁니다.
토마토 문제도 중간까지 가고나서 시간초과 뜨던데... 제 bfs 구성에 문제가 있는 것 같습니다.
고수분들의 도움을 요청해요!! ㅠㅠ