본문 바로가기

□ 이론/알고리즘

각 방향으로 이동한 위치 값을 반복문으로 구하는 방법

▶방향에 따른 이동 위치 값 반복문으로 구하기


알고리즘 문제를 해결하다 보면 어떤 좌표에서 4~8방향으로 이동한 위치 값이 필요한 경우가 있습니다.

만약 매번 모든 방향으로 이동한  위치 값을 확인해야 한다면 반복문을 통해 구현하는 것이 편리합니다.


예를 들어, 2차원 공간의 (x,y)의 위치에서 상/하/좌/우 네 방향으로 한 칸씩 이동한 위치 값이 필요하다면


(x는 행, y는 열을 나타냅니다!)

상 : (x-1, y)

하 : (x+1, y)

좌 : (x, y-1)

우 : (x, y+1)

이렇게 네 개의 위치 값을 구해야 합니다.


이해를 돕기 위해 (3,3)에서 상/하/좌/우 네 방향으로 이동했을 때 위치 좌표값을 나타낸 그림을 그려보았습니다.



이 네 방향의 위치 값을 편하게 구하기 위해서 아래와 같은 방법을 씁니다.


int dx[4] = {-1,1,0,0};

int dy[4] = {0,0,-1,1};

위와 같이 저장해두고

아래와 같은 식으로 반복문을 수행합니다.

for(int i=0; i<4; i++){

int nextX = x+dx[i];
int nextY = y+dy[i];

}

그러면 nextX와 nextY에 상/하/좌/우 네 방향으로 이동한 좌표 값이 차례대로 대입되게 됩니다.



이를 잘 활용하면 보다 편하게 문제를 해결할 수 있습니다.