[코딩 팁] 방향 배열(Direction Array) : 상하좌우 이동

인트로

2차원 좌표상에서 한 점을 기준으로 상하좌우 좌표를 구할 때 코드를 간결하게 작성하는 방법이다.

 

방향 배열은 BFS, 다익스트라, A*알고리즘에 자주 등장한다.

코드

switch 혹은 if-else문을 작성하지 않아도 된다.

int main()
{
	//상 하 좌 우
	int dirY[4] = { -1, 1, 0, 0 };
	int dirX[4] = { 0, 0, -1, 1 };

	int arr[3][3] = { {1,2,3},{4,5,6}, {7,8,9} };
	
	int posY = 1, posX = 1;

	cout << "초기 위치 Y :" << posY << " X : " << posX << endl;

	for (int i = 0; i < 4; i++)
	{
		int nextY = posY + dirY[i];
		int nextX = posX + dirX[i];

		cout << "Y : " << nextY << " X : " << nextX << endl;
	}
}

상 하 좌 우 순으로 출력한 결과