C#에서 배열은 프로그래밍의 기본적인 구성 요소 중 하나입니다. 배열은 동일한 타입의 데이터를 연속적인 메모리 공간에 저장하는 방법을 제공합니다. 이 글에서는 배열이 무엇인지, 그리고 C#에서 배열을 어떻게 사용하는지에 대해 자세히 알아보겠습니다.

배열이란 무엇인가?

배열은 같은 타입의 여러 변수를 하나의 이름으로 그룹화하여 관리할 수 있는 방법입니다. 각각의 데이터 항목은 인덱스를 통해 접근할 수 있으며, 배열의 모든 요소는 연속적인 메모리 위치에 저장됩니다. C#에서는 배열을 다양한 형태로 사용할 수 있으며, 가장 일반적인 형태는 1차원 배열입니다.

배열에 대해 공부해 보자

배열의 선언 및 초기화

C#에서 배열을 선언하는 방법은 매우 간단합니다. 다음은 int 타입의 배열을 선언하고 초기화하는 기본적인 예제입니다.

int[] numbers = new int[5];

위 코드에서 int[]는 int 타입의 배열을 의미하고, new int[5]는 5개의 정수를 저장할 수 있는 배열을 생성합니다.

배열을 초기화하는 또 다른 방법으로, 선언과 동시에 배열의 요소를 초기화할 수도 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };

이 방법을 사용하면 배열의 크기를 명시적으로 지정할 필요가 없으며, 초기화에 사용된 요소의 수에 따라 배열의 크기가 자동으로 결정됩니다.

배열의 사용

배열에 접근하려면 인덱스를 사용합니다. 인덱스는 배열의 특정 위치를 가리키며, 0부터 시작합니다. 다음은 배열의 요소에 접근하는 방법을 보여줍니다.

int firstNumber = numbers[0]; // 첫 번째 요소에 접근
numbers[1] = 20; // 두 번째 요소의 값을 20으로 변경

배열을 활용한 간단한 예제: 카드 게임

C#에서 배열의 실제 사용 예를 보여주기 위해 간단한 카드 게임 구현 예제를 살펴보겠습니다.

카드 클래스 정의

먼저, 카드 한 장을 나타내는 Card 클래스를 정의합니다.

class Card
{
    public Suit Suit { get; private set; }
    public Value Value { get; private set; }

    public Card(Suit suit, Value value)
    {
        Suit = suit;
        Value = value;
    }

    public override string ToString()
    {
        return $"{Value} of {Suit}";
    }
}

카드 덱 클래스

이제 카드 덱을 나타내는 Deck 클래스를 만들고, 카드를 섞고 뽑는 메서드를 구현합니다.

class Deck
{
    private Card[] cards;

    public Deck()
    {
        cards = new Card[52];
        int index = 0;
        foreach (Suit suit in Enum.GetValues(typeof(Suit)))
        {
            foreach (Value value in Enum.GetValues(typeof(Value)))
            {
                cards[index++] = new Card(suit, value);
            }
        }
    }

    // 카드 섞기
    public void Shuffle()
    {
        Random rand = new Random();
        for (int i = cards.Length - 1; i > 0; i--)
        {
            int j = rand.Next(i + 1);
            Card temp = cards[i];
            cards[i] = cards[j];
            cards[j] = temp;
        }
    }

    // 카드 뽑기
    public Card DrawCard()
    {
        Card card = cards[0];
        Array.Copy(cards, 1, cards, 0, cards.Length - 1);
        cards[cards.Length - 1] = null;
        return card;
    }
}

게임 실행

마지막으로, Main 메서드에서 카드 덱을 생성하고 카드를 뽑아 출력하는 간단한 로직을 작성합니다.

class Program
{
    static void Main(string[] args)
    {
        Deck deck = new Deck();
        deck.Shuffle();

        for (int i = 0; i < 5; i++)
        {
            Card card = deck.DrawCard();
            Console.WriteLine(card.ToString());
        }
    }
}

이 예제는 배열을 사용하여 실제 문제를 해결하는 방법을 보여줍니다. 배열은 데이터를 효율적으로 관리하고 액세스하는 데 필수적인 도구이며, C# 프로그래밍에서 광범위하게 사용됩니다.