스스로 BFS,DFS가 부족하다고 생각해서 선택한 문제

문제 풀이에 앞서 DFS와 BFS를 비교해보자면
정답코드
#include<vector>
using namespace std;
int solution(vector<vector<int> > maps)
{
struct Node{int y,x ;} queue[10000];
int visited[100][100] = {0,};
int dir[4][2] = {{0,1},{1,0},{-1,0},{0,-1}};
int head,tail =1;
int l = maps.size();
int w = maps[0].size();
queue[0]={0,0};
visited[0][0]=1;
while(head!=tail){
Node now = queue[head];
for(int i = 0 ; i < 4 ; i++){
int dy = dir[i][0]+ now.y;
int dx = dir[i][1]+ now.x;
if(dy < 0 || dx < 0 || dy >=l || dx >= w) continue;
if(maps[dy][dx] == 0 || visited[dy][dx]==1) continue;
visited[dy][dx]=1;
maps[dy][dx] = maps[now.y][now.x] + 1;
queue[tail++] = {dy,dx};
if(dy==l-1 &&dx == w-1)return maps[dy][dx];
}
head++;
}
return -1;
}
처음에는 새로 정의할 함수에서 처리하기 위해 struct인 Node와 visited 2차원 배열을 전역변수로 남겨 놓았었는데 이 때문에 효율성 테스트에서 감점을 받았다.
->불필요한 전역변수를 지역변수로 옮기니 통과했다.