Skip to main content

[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

0

+1

⬇ 아래쪽

행 +1, 열 같음

+1

0

⬅ 왼쪽

같은 행, 열 -1

0

-1

⬆ 위쪽

행 -1, 열 같음

-1

0

그래서 이렇게 선언하는 것이다.

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)라고 할 때:

  1. 오른쪽 이동 ➡
    nx = 2 + dx[0] = 2 + 0 = 2
    ny = 2 + dy[0] = 2 + 1 = 3
    👉 (2, 3)으로 이동 (같은 행, 열만 +1)
  2. 아래 이동 ⬇
    nx = 2 + dx[1] = 3
    ny = 2 + dy[1] = 2
    👉 (3, 2)으로 이동 (행만 +1, 열 그대로)

image.png