14502번: 연구소
Memo
로직 설명
- 벽 3개를 세울 수 있는 모든 경우를 조사합니다.
- 벽 3개가 세워지면, 바이러스 위치를 큐에 넣고 BFS를 돌립니다.
어려웠던 부분 😭
- 브루트포스를 돌릴 때, 인자로 x,y 좌표를 넘기지 않고, 몇 번째 위치인지를 넘겼습니다. 위치를 받고나서, x,y 좌표를 구해냈습니다.
- 좌표를 구해내는 과정에서 맵의 시작 위치가 0,0이 아닌 1,1부터 시작해서 어려웠기 때문에, 0,0을 시작 위치로 바꿔서 풀었습니다.
- 브루트포스 함수 내에서
if (cnt == 3)
{
bfs();
safe_area_check();
return ;
}
if (ind >= N * M)
return ;
if문 순서를 잘못 고려했습니다. 처음에는 if (ind ≥ N * M) 이 부분이 위에 있었는데, 그럴 경우 마지막 위치에 기둥을 세웠을 경우 BFS를 돌리지 않고 종료되는 문제가 있었습니다.
Code
제출 날짜
2021/05/15
메모리
2016 KB