배열 (Array) C#

Shy·2025년 3월 13일

C#

목록 보기
17/27

Array

C#의 배열(Array)는 같은 데이터 타입의 요소들을 연속적으로 저장하는 자료구조이다.

배열을 사용하면 여러 개의 값을 한 변수에 저장하고 쉽게 관리할 수 있다.


1. 배열 선언 및 초기화

배열 선언 방법

타입[] 배열이름;
  • 배열의 타입을 지정해야 한다(int[], string[] 등)
  • 배열은 크기가 고정된다. (동적 크기 변경 불가)

배열 선언 & 초기화 예제

int[] numbers = new int[5]; // 크기가 5인 정수형 배열 생성
  • 배열의 초기 값은 기본값(0, null, false)으로 설정된다.
  • int[5] → 5개의 공간을 가진 배열이지만 값은 초기화되지 않는다.

2. 배열에 값 할당 & 접근

인덱스를 사용하여 값 저장 및 접근

int[] numbers = new int[3];

numbers[0] = 10; // 첫 번째 요소에 10 저장
numbers[1] = 20; // 두 번째 요소에 20 저장
numbers[2] = 30; // 세 번째 요소에 30 저장

Console.WriteLine(numbers[1]); // 20 출력
  • 배열은 0부터 시작하는 인덱스(Zero-based Indexing)를 사용한다.
  • numbers[1]은 배열의 두 번째 요소를 의미한다.

3. 배열 선언 & 초기화 (한 줄로)

선언과 동시에 초기화 하는 방법

int[] numbers = { 10, 20, 30, 40, 50 };

또는

int[] numbers = new int[] { 10, 20, 30, 40, 50 };

크기를 지정하지 않아도 컴파일러가 자동으로 배열 크기를 설정한다.


4. 배열 순회 (for & foreach)

for 문으로 배열 순회

int[] numbers = { 10, 20, 30, 40, 50 };

for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine($"Index {i}: {numbers[i]}");
}
  • 배열의 크기는 numbers.Length로 가져올 수 있다.
  • 인덱스를 직접 조작할 수 있어 필요할 때 유용하다.

foreach 문으로 배열 순회

int[] numbers = { 10, 20, 30, 40, 50 };

foreach (int num in numbers)
{
    Console.WriteLine(num);
}
  • foreach문은 요소를 직접 가져오기 때문에 더 간결하고 가독성이 좋다.
  • 인덱스를 사용할 필요가 없을 때 유용하다.

5. 다차원 배열 (2D, 3D 등)

2차원 배열 (행렬 형태)

int[,] matrix = new int[2, 3] // 2행 3열 배열
{
    { 1, 2, 3 },
    { 4, 5, 6 }
};
// matrix[0,0] = 1
// matrix[1,2] = 6

2차원 배열 순회

for (int i = 0; i < 2; i++)
{
    for (int j = 0; j < 3; j++)
    {
        Console.Write(matrix[i, j] + " ");
    }
    Console.WriteLine();
}
// 1 2 3
// 4 5 6

가변 배열 (Jagged Array, 계단형 배열)
행마다 열 개수가 다를 수 있다.

int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2 };
jaggedArray[1] = new int[] { 3, 4, 5 };
jaggedArray[2] = new int[] { 6 };
for (int i = 0; i < jaggedArray.Length; i++)
{
    for (int j = 0; j < jaggedArray[i].Length; j++)
    {
        Console.Write(jaggedArray[i][j] + " ");
    }
    Console.WriteLine();
}

6. 배열 메서드 (Array 클래스)

배열 정렬 (Array.Sort())

int[] numbers = { 5, 3, 8, 1, 2 };
Array.Sort(numbers); // 오름차순 정렬

foreach (var num in numbers)
{
    Console.Write(num + " "); // 1 2 3 5 8 출력
}
// 배열을 오름차순으로 정렬함

배열 뒤집기 (Array.Reverse())

Array.Reverse(numbers);

배열 요소 찾기 (Array.IndexOf())

int index = Array.IndexOf(numbers, 3);
Console.WriteLine(index); // 3이 있는 인덱스 출력
  • 배열에서 특정 값의 인덱스를 찾을 때 사용한다.
  • 찾는 값이 없으면 -1을 반환한다.

7. List vs Array 비교

비교 항목배열 (Array)리스트 (List<T>)
크기 변경 가능 여부❌ 고정 크기✅ 동적 크기 변경 가능
선언 방식int[] arr = new int[5];List<int> list = new List<int>();
요소 추가/삭제❌ 불가능 (배열 크기 변경 불가)list.Add(값), list.Remove(값)
성능✅ 빠름🔺 크기 변경 시 성능 저하 가능
  • 배열은 크기가 고정되므로 유동적인 데이터에는 List<T>가 더 적합하다.
  • 하지만 List<T>Array보다 성능이 다소 떨어질 수 있다.

8. 정리

개념설명예제
배열 선언크기가 고정된 배열int[] arr = new int[5];
배열 초기화값을 직접 설정int[] arr = { 1, 2, 3 };
배열 접근인덱스를 사용하여 값 가져오기arr[0]
배열 순회for 또는 foreach 사용foreach (var n in arr) { ... }
2차원 배열행렬 형태의 배열int[,] matrix = new int[2, 3];
가변 배열행마다 열 개수가 다른 배열int[][] jaggedArray = new int[3][];
배열 정렬Array.Sort() 사용Array.Sort(arr);
배열 뒤집기Array.Reverse() 사용Array.Reverse(arr);
배열에서 요소 찾기Array.IndexOf() 사용Array.IndexOf(arr, 3);
profile
신입사원...

0개의 댓글