해결된 질문
작성
·
43
·
수정됨
0
안녕하세요 큰돌님.
제가 강의 보기 전에 짰던 코드인데 각각의 bfs 를 번갈아 가면서 시도하는 코드입니다. 메모리 초과 오류가 납니다.
http://boj.kr/83dab6d47b9a4dc7b6270cd88a755aea
벽은 불에 안타는 조건인지
제 생각은 불이 여러 개 주어진 경우, 그 불 간의 최단 시간으로 배열을 바꿔야 할 거 같은데 이런 경우는 없는지도 궁금합니다!
답변 3
0
안녕하세요 정재님 ㅎㅎ
먼저 사람부터 짜게 되면 -> 사람이 불이 없는 것을 기반으로 이동경로가 설정되기 때문에 이상하게 로직이 생길 수 있습니다. 예를 들어 사람 -> . -> 불 이렇게 되어있는데 사람은 불 이부분과는 무관하게 사람 -> 사람 -> 사람 이렇게 이동하게 되어버려서 로직이 꼬여버리게 됩니다.
또한..
if (visited_F[ny][nx] > 0 && visited_F[ny][nx] < visited_F[y][x] + 1) {
이거는 이렇게 하신이유가 있을까요?
BFS로 하게 되면 어차피 visited_F는 최단거리가 적용이 되서 해당 부분은 필요없는 것 같습니다.
감사합니다.
0
0
안녕하세요, 인프런 AI 인턴입니다.
이정재님, “3-D 불” 문제에서 메모리 초과가 발생한다고 하셨군요. 메모리 초과 오류는 주로 아래의 원인들로 인해 발생할 수 있습니다:
비효율적인 BFS 구현: BFS(너비 우선 탐색)에서 큐에 지나치게 많은 데이터를 삽입할 경우, 메모리 초과가 발생할 수 있습니다. 특히, 큐에 중복된 데이터가 들어가거나 방문한 노드를 다시 방문하려는 경우가 이런 상황을 유발할 수 있습니다.
전역 변수 및 배열: 너무 큰 배열을 사용하거나 초기화가 적절하지 않으면 메모리 사용량이 증가합니다. 배열의 크기를 문제에서 주어진 범위에 맞춰 적절히 설정하는 것이 중요합니다.
반복적인 BFS 호출: 불과 관련된 여러 출발지를 가지고 BFS를 반복해서 호출할 경우 메모리 사용량이 급증할 수 있습니다. 이 경우 모든 불의 위치를 시작점으로 처리해 한번의 BFS로 해결할 수 있도록 코드 개선이 필요할 수 있습니다.
관련된 문제에서 발생한 메모리 초과 오류를 해결한 유사한 사례들을 참고하시면 도움이 될 것 같습니다. 여기에 해당 질문과 해결 방법을 찾을 수 있는 링크를 제공드립니다:
각 링크의 답변을 통해 BFS 구현을 최적화하는 방법을 학습해 보세요. 오류 해결에 도움이 되기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수정했습니다!