if (map[curr.x][curr.y - 1])
{
q.push({ curr.x, curr.y - 1 });
map[curr.x][curr.y - 1] = 0;
result++;
}
if (map[curr.x - 1][curr.y])
{
q.push({ curr.x - 1, curr.y });
map[curr.x - 1][curr.y] = 0;
result++;
}
if (map[curr.x + 1][curr.y])
{
q.push({ curr.x + 1, curr.y });
map[curr.x + 1][curr.y] = 0;
result++;
}
if (map[curr.x][curr.y + 1])
{
q.push({ curr.x, curr.y + 1 });
map[curr.x][curr.y + 1] = 0;
result++;
}
저 x y 왔다갔다하면서 1 더했다 뺐다하는거 정신사나운데 어떻게 짧게 쨜 방법 없을까
패턴이 안 보임??
if (map[curr.x][curr.y - 1]){ q.push({ curr.x, curr.y - 1 }); map[curr.x][curr.y - 1] = 0; result++;}
이거를
int x; int y; x = curr.x; y = curr.y - 1;
if (map[x][y]){q.push({ x, y });map[x][y] = 0;result++;}
이렇게 하면 되는걸..
그럼 x값이랑 y값 바뀔때마다 똑같은거 다시 적어야하는거 아님?
if () { ... } 이걸 inline 함수로 만드셈
x, y 대입 후 func(x, y) 해줘야지.
비슷한거 코딩해본 기억으로는 이거 딱히 방법이 없던디
좌표평면에서 특정 좌표를 기준으로 상하좌우의 값을 체크하려는거 아니냐 ㅇㅅㅇ... 어설프게 반복문 써봐야 오히려 복잡해질듯
ㅇㅋ..
(0, -1), (-1, 0), (1, 0), (0, 1) 을 배열로 잡고 for 로 돌리는 방법도 있고.