Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 배열 완벽 가이드: 실전 예제로 배우는 배열의 핵심 활용법

배열(Array)은 여러 개의 데이터를 하나의 변수 이름으로 묶어 관리할 수 있는 기본적인 자료 구조입니다. C#에서 배열은 메모리상에 연속된(Contiguous) 공간에 할당되며, 인덱스를 사용해 각 요소에 빠르게 접근할 수 있다는 것이 가장 큰 특징입니다.

이 글에서는 C# 배열의 대표적인 활용 예제 세 가지를 소개합니다.

1. 정렬된 세 개의 배열에서 공통 요소 찾기

세 개의 정렬된 배열에서 모두 존재하는 공통 요소를 효율적으로 찾는 방법입니다. 세 개의 포인터(i, j, k)를 두고 각 배열을 동시에 순회하며 값을 비교합니다. 값이 서로 같으면 공통 요소이므로 출력하고, 그렇지 않으면 더 작은 값을 가진 배열의 포인터만 앞으로 이동시키는 방식입니다.

이 알고리즘은 이중·삼중 반복문을 사용하는 방식보다 훨씬 효율적이며, 시간 복잡도는 O(n1 + n2 + n3)입니다.

using System;

class Demo {

    static void commonElements(int []one, int []two, int []three) {
        int i = 0, j = 0, k = 0;

        while (i < one.Length && j < two.Length && k < three.Length) {
            if (one[i] == two[j] && two[j] == three[k]) {
                Console.Write(one[i] + " ");
                i++;j++;k++;
            }

            else if (one[i] < two[j])
            i++;

            else if (two[j] < three[k])
            j++;

            else
            k++;
        }
    }

    public static void Main() {
        int []one = {20, 35, 57, 70};
        int []two = {9, 35, 57, 70, 92};
        int []three = {25, 35, 55, 57, 67, 70};

        Console.Write("Common elements: ");

        commonElements(one, two, three);
    }
}

2. ArrayList를 활용한 동적 배열 생성

C#의 일반 배열은 크기를 미리 지정해야 하지만, ArrayList를 사용하면 요소를 자유롭게 추가하며 크기가 자동으로 늘어나는 동적 배열을 만들 수 있습니다. 아래 예제에서는 Add() 메서드로 요소를 추가하고, Count 속성으로 현재 요소 개수를 확인한 뒤 foreach 문으로 전체 목록을 출력합니다.

using System;
using System.Collections;

namespace CollectionApplication {
    class Program {
        static void Main(string[] args) {
            ArrayList al = new ArrayList();

            al.Add(99);
            al.Add(47);
            al.Add(64);

            Console.WriteLine("Count: {0}", al.Count);

            Console.Write("List: ");
            foreach (int i in al) {
                Console.Write(i + " ");
            }

            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

3. 가변 배열(Jagged Array) 선언과 요소 접근

가변 배열(Jagged Array)은 '배열의 배열'로, 각 행마다 서로 다른 길이의 배열을 가질 수 있는 2차원 배열 형태입니다. 아래 예제에서는 좌표(points) 데이터를 가변 배열로 선언하고, 중첩 for 문으로 모든 요소를 출력한 후 특정 위치의 요소에 접근하는 방법을 보여줍니다.

using System;

namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {

            int[][] points = new int[][]{new int[]{10,5},new int[]{30,40}, new int[]{70,80},new int[]{ 60, 70 }};
int i, j;

            for (i = 0; i < 3; i++) {
                for (j = 0; j < 2; j++) {
                    Console.WriteLine("a[{0}][{1}] = {2}", i, j, points[i][j]);
                }
            }

            // access
            int x = points[0][1];
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

마무리

지금까지 C# 배열의 대표적인 활용 사례를 살펴보았습니다. 고정 크기의 데이터 집합에는 일반 배열을, 크기가 유동적인 경우에는 ArrayList나 List<T>를, 행마다 길이가 다른 데이터에는 가변 배열을 사용하는 것이 좋습니다. 상황에 맞는 배열 유형을 선택하면 코드의 가독성과 성능을 모두 높일 수 있습니다.