(C++) 3차원 배열

사실 3차원 배열을 작성할 필요가 없습니다.

그러나 테트리스, 화장실 바닥공사 등의 판덮개 문제를 해결하기 위해 사용된다.

문제를 푸는 것보다

그래픽이나 기하학적 형태를 표현하기 위한 데이터 표현 방법으로 사용됩니다.


3차원을 고려하는 대신

서로 위에 쌓인 2D 배열로 상상하는 것이 훨씬 쉽습니다.

따라서 3D 배열 arr(x)(y)(z)가 있는 경우

(x) 만 새롭습니다.

나머지(y)(z)를 x,y의 2차원 배열로 생각할 수 있습니다.

이 새(x)가 레이어입니다.

따라서 첫 번째 레이어, 두 번째 레이어, 세 번째 레이어…. n 레이어마다 새로운 2D 배열을 생각할 수 있습니다!


테트리스 구조를 이렇게 표현하면

const int block(4)(4)(4) = {
	// 0층
	{
		{0,0,0,0},
		{0,1,0,0},
		{0,1,0,0},
		{0,1,1,0}
	},
	// 1층
	{
		{0,0,0,0},
		{0,1,1,1},
		{0,1,0,0},
		{0,0,0,0}
	},
	// 2층
	{
		{0,0,0,0},
		{0,1,1,0},
		{0,0,1,0},
		{0,0,1,0}
	},
	// 3층
	{
		{0,0,0,0},
		{0,0,1,0},
		{1,1,1,0},
		{0,0,0,0}
	}
};

이렇게 표현할 수 있습니다.

간결하다

const int block(4)(4)(4) = {
	{{0,0,0,0},{0,1,0,0},{0,1,0,0},{0,1,1,0}},// 0층
	{{0,0,0,0},{0,1,1,1},{0,1,0,0},{0,0,0,0}},// 1층
	{{0,0,0,0},{0,1,1,0},{0,0,1,0},{0,0,1,0}}, // 2층
	{{0,0,0,0},{0,0,1,0},{1,1,1,0},{0,0,0,0}} // 3층
};

당신은 이것을 할 수 있습니다

3D 배열은 약간 어지럽지만 미쳤습니다.