
[백준 14502] 연구소 - 자바(java)
·
알고리즘
0은 빈칸, 1은 벽, 2는 바이러스 이고 N과 M으로 이루어진 지도 안에서 벽을 3개 세워서 나올 수 있는 최대 안전 영역의 크기를 구해야한다. N과 M이 8이므로 완전 탐색으로 구해도 시간이 남을 것 같다라는 생각을 하였고, 벽을 3개 나눈 것 또한 백트래킹을 통해 벽을 세우고 BFS를 통하여 바이러스를 퍼뜨리고 각각의 경우에 대하여 안전 영역을 구하도록 하면 될 것 같다라고 생각했다. 벽을 3개 나누는 백트래킹은 백준 N과 M(5) 에서 사용한 백트래킹을 사용하였다. 그러면 내가 구현해야할 알고리즘은 벽 3개를 세울 dfs(백트래킹) 알고리즘, 바이러스를 퍼뜨릴 BFS 알고리즘, 바이러스를 퍼뜨리고 남은 안전영역을 구하는 브루트포스 알고리즘이렇게 3개가 있는 것 같다. 각각의 메소드로 따로따로 구현..