[Java] 방향 벡터 배열 좌표기준
방향 벡터 배열(dx/dy) 좌표가 아래와 같은 이유
int[] dx = {0, 1, 0, -1}; // 행 이동 (→ ↓ ← ↑)
int[] dy = {1, 0, -1, 0}; // 열 이동
2차원 배열에서 위치는 [행][열]
, 즉 [x][y]
또는 [i][j]
순서로 접근한다. 여기서 행(x
)은 위아래 방향, 열(y
)은 좌우 방향이다.
위 코드를 dx[i]
, dy[i]
와 함께 써서 새로운 좌표:
nx = x + dx[i]
ny = y + dy[i]
로 이동 가능하다.
✅ dx
, dy
방향 기준
우리가 순서대로 가고 싶은 방향은 아래와 같다.
방향 | 이동 의미 | 행 변화(dx) | 열 변화(dy) |
---|---|---|---|
➡ 오른쪽 | 같은 행, 열만 +1 |
|
|
⬇ 아래쪽 | 행 +1, 열 같음 |
|
|
⬅ 왼쪽 | 같은 행, 열 -1 |
|
|
⬆ 위쪽 | 행 -1, 열 같음 |
|
|
그래서 이렇게 선언하는 것이다.
int[] dx = {0, 1, 0, -1}; // 행(x) 방향 변화
int[] dy = {1, 0, -1, 0}; // 열(y) 방향 변화
dx
, dy
의 위치가 다르게 보이지만, 실제로는 방향의 의미를 [행, 열] 순서로 정의한 것뿐이다.dx
는 행의 이동량, dy
는 열의 이동량이니까, 오른쪽 방향은
- 행 이동 없음 (
dx = 0
), - 열만 +1 (
dy = 1
)로 표현되는 것이다.
✅ 예시
예를 들어, 현재 위치가 (2, 2)
라고 할 때:
- 오른쪽 이동 ➡
nx = 2 + dx[0] = 2 + 0 = 2
ny = 2 + dy[0] = 2 + 1 = 3
👉(2, 3)
으로 이동 (같은 행, 열만 +1) - 아래 이동 ⬇
nx = 2 + dx[1] = 3
ny = 2 + dy[1] = 2
👉(3, 2)
으로 이동 (행만 +1, 열 그대로)