이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

[C#] 배열 - 다차원 배열, 가변 배열

  • 2019.07.17 04:17
  • Programming Language/C Sharp
글 작성자: Coding Groot
C#에는 다차원 배열과 가변 배열이 있다.
두 종류의 배열의 차이와 선언 방법에 대해 간단히 알아보자!

다차원 배열

다차원 배열은 2차원, 3차원,... , n차원의 배열을 뜻한다.

다차원 배열을 보기 전에 먼저 1차원 배열을 살펴보자.

  • 1차원 배열의 문법
    타입[] 배열이름 = new 타입[배열크기];

  • 1차원 배열의 선언과 동시에 초기화
    타입[] 배열이름 = new 타입[] { 요소1,요소2, ...};

// 예시 1
int[] myArray1 = new int[10];
myArray1[1] = 1;

// 예시 2
int[] myArray2 = new int[] {1,2,3,4,5};

// 예시 3
string[] myArray3 = new string[] {"text1","text2","text3"};

다차원 배열은 1차원 배열의 문법에 , 만 추가해주면 만들 수 있다.

2차원 배열

2차원 배열은 ,를 사용하여 2칸을 만들어주면 된다.
  • 2차원 배열의 문법
    타입[,] 배열이름 = new 타입[행크기, 열크기];

  • 2차원 배열의 선언과 동시에 초기화
    타입[,] 배열이름 = new 타입[,] { {요소11,요소12,...,},{요소21,요소22,...}, ...};

// 예시 1 - 3x4배열 선언과 사용
int[,] Array3by4 = new int[3, 4];
Array3by4[0, 0] = 0;
Array3by4[2, 3] = 1;

// 예시 2 - 3x2배열 선언과 동시에 초기화
int[,] Array3by2 = new int[,]
{ 
	{ 11, 12 }, 
	{ 21, 22 }, 
	{ 31, 32 }
};

3차원 배열

3차원 배열부터는 예상할 수 있다.
  • 3차원 배열의 문법
    타입[,] 배열이름 = new 타입[높이, 행크기, 열크기];

  • 2차원 배열의 선언과 동시에 초기화
    타입[,] 배열이름 = new 타입[,] { {{요소111,요소112,...}, {요소121,요소122,...}, ...}, {{요소211,요소212,...}, {요소221,요소222,...}}, ...};

// 예시 1 - 5x4x6배열 선언과 사용
int[, ,] array546 = new int[5, 4, 6];
array546[4, 3, 5] = 3;

// 예시 2 - 3x2x2배열 선언과 동시에 초기화
int[, ,] array322 = new int[, ,] 
{ 
    {//1,n,m
        { 111, 112 }, 
        { 121, 122 }
    },
    {//2,n,m
        { 211, 212 }, 
        { 221, 222 }
    },
    {//3,n,m
        { 311, 312 },
        { 321, 322 }
    },
};

가변 배열

가변 배열이란 배열의 길이를 바꿀 수 있는 배열이다.

그래서 배열의 배열이라고도 부르는데 아래의 코드를 보며 왜 그렇게 부르는지 알아보자.

3x3 배열을 가변 배열로 만드는 코드를 구경해보자.

// 3x3 가변 배열의 선언
int[][] jaggedArray = new int[3][];

jaggedArray[0] = new int[3];
jaggedArray[1] = new int[3];
jaggedArray[2] = new int[3];

여기서 가변 배열은 배열(jaggedArray[n])의 배열(new int[n])임을 확인할 수 있다!


가변 배열은 길이를 바꿀 수 있다

정확히 말하면 가변 배열은 차원 단위에서 배열 크기를 바꿀 수 있다는 말이다.

위에서 예시로 제시한 코드 배열마다의 차원의 길이를 모두 3으로 동일하게 설정해서 3x3 2차원 배열(다차원 배열)과 같은 모양으로 만든 것이다.

배열의 차원마다의 길이를 가변 해보자.

다차원 배열의 모양인 3x3 배열이 아니라 각 배열 행(차원)의 크기를 바꿔서 가변 배열의 문법을 익혀보자.
다음은 배열의 0차원, 1차원, 2차원의 크기를 5, 4, 9로 하는 가변 배열을 선언하는 코드이다.

// 가변 배열의 특성
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[9];

// 위 배열의 그림
// [] [] [] [] []
// [] [] [] []
// [] [] [] [] [] [] [] [] [] 

다차원 배열과 다르게 가변 배열은 2차원 배열을 직사각형이 아닌 막대 그래프처럼 각 차원의 크기를 변형시킬 수 있다는 장점이 있다!

더보기

참고

막대 그래프처럼 들쭉날쭉 한 것을 영어로 Jagged라고 하기 때문에 가변 배열을 영어로 Jagged Array라고 한다. 


가변 배열도 선언과 동시와 초기화를 할 수 있다.

// 예시 1
int[][] jaggedArray1 = new int[3][]
jaggedArray[0] = new int[] { 11, 12, 13 };
jaggedArray[1] = new int[] { 21, 22, 23, 24 };
jaggedArray[2] = new int[] { 31, 32 };

// 예시 2
int[][] jaggedArray2 = new int[][]
{
	new int[] { 11, 12, 13 },
	new int[] { 21, 22, 23, 24 },
	new int[] { 31, 32 }
};

예시 1과 예시 2는 모두 동일한 코드이다.


출처

  • 1차원 배열
  • 다차원 배열
  • 가변 배열
Icons made by Freepik from www.flaticon.com
 
반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Mac 사용자를 위한 C#으로 개발할 때 좋은 도구

    Mac 사용자를 위한 C#으로 개발할 때 좋은 도구

    2022.12.13
  • [C# 8.0] Nullable Reference Type이란?

    [C# 8.0] Nullable Reference Type이란?

    2020.02.29
  • [C#] Nullable (Value Type)

    [C#] Nullable (Value Type)

    2020.02.26
  • [C#] 구조체(struct)

    [C#] 구조체(struct)

    2019.07.19
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (183) N
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • tutorial
  • git
  • 한빛미디어
  • aws
  • Github
  • 서평
  • 회고
  • javascript
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바