티스토리 뷰

 

안녕하세요 쫑쫑블로그입니다.

오늘의 설명 드릴 내용은 다차원 배열입니다.

 

배열을 선언할 때, 지정하는 배열의 크기에 따라 다차원 배열이라고 합니다.

1차원 배열의 경우 arr[2]; 라고 표현하지만 2차원 배열의 경우는 arr[3][5];라고 표현합니다.

이런식으로 3차원 배열의 경우 arr[3][5][4]; 라고 표현한다면 원하고자 하는 값을

더욱 쉽게 표현가능합니다.

 

2차원 배열 : 2차원 배열의 요소는 “배열명 [행][열]; 이렇게 선언합니다.

선언 방법: 배열의 데이터타입을 선언한 다음 배열명

그리고 배열의 크기인 [] []을 표시합니다.

 

2차원 배열부터는 다차원 배열이라고 표현하면 배열의 개수가 [2][5]인 경우

메모리에 저장되는 순서는 오른쪽 인덱스 순으로 저장됩니다.

[0][1],[0][2],[0][3]순서대로 주소 값에 저장이 된다고 생각하시면 됩니다.

 

인덱스는 저번 시간에 설명 드렸었죠 !! 기억이 나시지 않는 분은 배열 1편을 참조해주세요!!

이제는 배열의 초기값을 표현하는 방식에 대해 설명드리겠습니다.

1. int arr[2][4] = {1, 2, 3, 4, 5, 6, 7, 8}; 또는 2. int arr[2][4]= {{ 1, 2, 3, 4 }, { 5, 6, 7, 8 }};

이렇게 표현합니다.

 

하지만 첫번째 경우 행의 구분이 정확히 파악하기 어렵다는 단점이 있습니다.

따라서 프로그래밍을 할 때는 2번 방법을 자주 사용하여 행과 열의 구분을 두고 파악하기 쉽게

초기값을 표현하도록 합시다!.

 

이제 3차원 배열에 대해 배워보도록 합시다.

3차원 배열은 arr[2][2][3]; 이라고 표현됩니다. 기본적인 구조는 2차원배열과 비슷하지만

가장 먼저 메모리 공간에 주소를 확보하여 저장하기 위한 구분자는 입니다.

 

2개의 면을 선언했기 때문에 첫번째 면에 대한 행과 열을 채운 다음 두번째 면에 행과 열을 채웁니다.

이해가 쉽게 설명하자면

 

arr[2][2][3] == arr[][][]; 입니다.

순서는 [0][0][1], [0][0][2] 이렇게 채워지는 것이죠.

이제 3차원배열의 초기값 선언에 대해서 배워보겠습니다. 이는 2차원 배열과 거의 동일 합니다.

 

arr[2][2][3] = { { { 1 ,2 ,3 }, { 2, 3, 4 }, { 5, 2, 1 } },

{ { 2, 1, 5 },{ 2, 5, 1 },{ 3, 1, 2 } }, { {1, 2, 3 },{ 1, 2, 3},{ 1, 2, 3 } } };

이렇게 표현하면 됩니다.

 

 

이제 예제로 넘어 가겠습니다.

2차원배열의 예제입니다.

#include

int main() {//2차원 배열

int arr[3][4] = {// 행과 열을 표시한다.

{1, 2, 3, 4},

{5, 6, 7, 8},

{9, 10, 11, 12}

};

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

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

printf("% d", arr[i][j]);

}

printf("\n");

 

}

return 0;

}

행과 열을 표시하는 예제입니다.

이번에는 좀 어려운 예제를 가르쳐 드리겠습니다.

파스칼의 삼각형인데요. 수학에서는 이항정리를 배울 때 나오는 공식이죠

1

1 2 1

1 3 3 1

1 4 6 4 1 …

이런 식으로 위에 두 수가 더 해지면서 밑의 수가 되고 그런 모양입니다.

코딩을 할 경우 가장 중요한 것은 규칙을 파악하는 것입니다

소스코드를 보여드리겠습니다.

 

#include"pch.h"

#include

int main() {

int p[10][10];

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

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

if (j == 0 || j == i) {

p[i][j] = 1;

}

else {

p[i][j] = p[i - 1][j - 1] + p[i - 1][j]; 파악하는 것

}

printf("%d", p[i][j]);

}

printf("\n");

}

}

 

이상 배열2편이 모두 마무리 되었습니다.

궁금하신 점이나 이해가지 않는 부분은 댓글로 남겨주세요 ㅎㅎ

이상 쫑쫑블로그 였습니다.

행복한 하루 보내세요 😊