나 개발자 진짜 되냐?

[ C# 기본 문법 10 ] 배열 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 10 ] 배열

Snow Rabbit 2024. 9. 21. 23:29

 

 

 

배열이다.

 

나는 배열을 굉장히 어려워했던 과거 기억이 있다.

 

오늘 공부로 빠삭하게 머리에 집어넣어야겠다.

 


🌟 배열 🌟

 

동일한 자료형의 값들이 연속적으로 저장되는 자료 구조

 

배열은 인덱스를 사용해서 접근한다.

인덱싱은 0번부터 시작이다.

 

선언된 크기만큼 공간을 메모리에 할당받는다.

 

 

 

✨ 배열 선언 ✨

데이터_유형[]  배열_이름;

 

 

✨ 배열 초기화 ✨

배열_이름 = new 데이터_유형[크기];

여기서 new는 할당하다는 뜻으로 해석..!

 

 

✨ 배열 한 줄로 선언 및 초기화 ✨

데이터_유형[] 배열_이름 = new 데이터_유형[크기];

위에 두개 합친 것 

 

 

✨ 배열 요소 접근 ✨

배열_이름[인덱스] = 값;

값 = 배열_이름[인덱스];

 

 

 

예제를 보며 익혀보자!

 

// 데이터 삽입 + 초기화
int[] itemPrices = { 100, 200, 300, 400, 500 };
int totalPrice = 0;

//length 는 길이! 이 배열의 길이 5개니까 5이다!
for (int i = 0; i < itemPrices.Length; i++) // 0부터 4까지 돌아간다.
{	
	//가격을 더해준다.
    totalPrice += itemPrices[i];
}

Console.WriteLine("총 아이템 가격: " + totalPrice + " gold");

 

주석에도 다 써놨지만

Length는 길이라는 뜻으로

배열의 총길이를 의미한다.

 

우리는 배열에 5개를 넣었으니

길이도 5일거고

0부터 4까지 있을 것이다.

 

 

배열을 이용해서 숫자 맞추기 게임을 하나 만들어 보자!

Random random = new Random();  // 랜덤 객체 생성
int[] numbers = new int[3];  // 3개의 숫자를 저장할 배열

// 3개의 랜덤 숫자 생성하여 배열에 저장
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = random.Next(1, 10);
}

int attempt = 0;  // 시도 횟수 초기화
while (true)
{
    Console.Write("3개의 숫자를 입력하세요 (1~9): ");
    int[] guesses = new int[3];  // 사용자가 입력한 숫자를 저장할 배열

    // 사용자가 입력한 숫자 배열에 저장
    for (int i = 0; i < guesses.Length; i++)
    {
        guesses[i] = int.Parse(Console.ReadLine());
    }

    int correct = 0;  // 맞춘 숫자의 개수 초기화

    // 숫자 비교 및 맞춘 개수 계산
    // 숫자 3개를 비교해야하니까 2차원 배열
    for (int i = 0; i < numbers.Length; i++)
    {
        for (int j = 0; j < guesses.Length; j++)
        {
            if (numbers[i] == guesses[j])
            {
                correct++;
                break;
            }
        }
    }

    attempt++;  // 시도 횟수 증가
    Console.WriteLine("시도 #" + attempt + ": " + correct + "개의 숫자를 맞추셨습니다.");

    // 모든 숫자를 맞춘 경우 게임 종료
    if (correct == 3)
    {
        Console.WriteLine("축하합니다! 모든 숫자를 맞추셨습니다.");
        break;
    }
}

 

 

🌟 다차원 배열 🌟

배열의 배열

여러 개 배열을 하나로 묶어놓은 배열

보통 행과 열로 이루어진 표 형태와 유사한 구조

2차원 3차원 형태의 배열을 의미하며

 

우리가 배우는 C#에서는 다차원 배열을 선언할 때

각 차원의 크기를 지정하여 생성한다.

 

// 2차원 배열의 선언과 초기화
int[,] array3 = new int[2, 3];  // 2행 3열의 int형 2차원 배열 선언

// 다차원 배열 초기화
array3[0, 0] = 1;
array3[0, 1] = 2;
array3[0, 2] = 3;
array3[1, 0] = 4;
array3[1, 1] = 5;
array3[1, 2] = 6;

// 선언과 함께 초기화
int[,] array2D = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };

2,3 이기 때문에

0과 1

0,1,2

가 된다.

 

혹시 몰라서 3차원도 가져왔다.

2차원은 행과 열이고

3차원은 면, 행, 열 이다.

 

윽.. 복잡해...!!!!!

// 3차원 배열의 선언과 초기화
int[,,] array3D = new int[2, 3, 4] 
{
    { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } },
    { { 13, 14, 15, 16 }, { 17, 18, 19, 20 }, { 21, 22, 23, 24 } }
};

 

 

2차원 배열을 통해 게임 맵을 자주 구현한다고 하여

예시문을 가져왔다.

 

함께 보자!

int[,] map = new int[5, 5] 
{ 
    { 1, 1, 1, 1, 1 }, 
    { 1, 0, 0, 0, 1 }, 
    { 1, 0, 1, 0, 1 }, 
    { 1, 0, 0, 0, 1 }, 
    { 1, 1, 1, 1, 1 } 
};

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (map[i, j] == 1)
        {
            Console.Write("■ ");
        }
        else
        {
            Console.Write("□ ");
        }
    }
    Console.WriteLine();
}

선언과 함께 초기화를 해주기 위해

중괄호를 열어서 값을 집어넣어주었다.

 

그리고 2차원 배열이니까

for문도 두 개 넣어서

 

0.0 이 1일 때

0.1 이 1일 때

1.0 이 1일 때

등으로

 

for문을 돌리고

만약에 1이면 시큼한 네모를

아니면 빈칸네모를 넣어주는 식을 넣고

 

첫 줄이 끝나면

엔터를 넣어서

다음칸으로 내려갈 수 있게 해 준다.

 

이렇게 해주면

결과창이

겉에는 시큼한 네모가

안에는 빈칸네모가 그려져서 나온다.

 

사진을 첨부하려고 했는데

징그러워서 스킵한다...ㅋㅎㅎㅋ


이렇게 다차원 배열과 배열을 알아보았다.

 

배열은 봐도 봐도 어려운 거 같다.

자주 들여다보고 익히고 싶다.

 

[]는 배열!

중괄호 필수!