사실은 처음에는 모든 벽을 탐색하여 하나씩 0으로 바꾸고 bfs를 수행했을 때의 결과를 구하는 방식으로 구현을 했다.
당연히 이는 시간초과..
질문게시판에 상당히 좋은 필독서가 있었다.
즉, 해당 문제는 단순히 현재 위치를 저장하는 다른 BFS문제의 방식이 아닌, '현재 상태'를 저장하는 방식으로 문제를 해결해야 한다.

visited 배열과 큐에 저장한다.(다음 방문 할 위치의 visited 값) = (현재 위치의 vistied 값) + 1 방식으로 최단 거리를 탐색한다.visited 를 2개(부수기 전, 부순 후)로 둔다.visited 배열로 넘어가 최단거리를 찾는다.visited[next_x][next_y][breaked] = vistied[x][y][not_breaked] + 1visited[next_x][next_y][not_breaked] = vistied[x][y][not_breaked] + 1visited 배열을 바탕으로 최단거리를 찾는다.visited[next_x][next_y][break_state] = vistied[x][y][break_state] + 1