C# 배열: 여러 값을 저장하는 초보자 가이드

안녕하세요, 열정적인 프로그래머 여러분! 오늘 우리는 C# 배열의 세계에 흥미로운 여정을 떠납니다. 배열은 동일한 유형의 여러 항목을 보관할 수 있는 마법의 컨테이너라고 생각해보세요. 당신의 좋아하는 쵸코レート 상자를 생각해보세요. 하지만 이번에는 쵸코レート 대신 데이터를 저장하고 있습니다!

C# - Arrays

배열이란?

자, 구체적인 내용으로 들어가기 전에 배열이 무엇인지 이해해보겠습니다. 배열은 동일한 유형의 여러 값을 단일 변수에 저장할 수 있게 해주는 데이터 구조입니다. 당신이 교사(저처럼!)이고 30명의 학생들의 점수를 저장하고 싶다면, 30개의 별도 변수를 만드는 대신 단일 배열을 사용하여 모든 점수를 저장할 수 있습니다. 멋지죠?

배열 선언

기본적인 내용부터 시작해보겠습니다: 배열을 어떻게 선언하는지 배워보겠습니다. 문법은 매우 간단합니다:

dataType[] arrayName;

예를 들어, 정수형 배열을 선언하고 싶다면 다음과 같이 작성합니다:

int[] grades;

이 문장은 C#에게 우리가 정수 값을 저장할 grades라는 배열을 만들고 있다는 것을 알립니다. 하지만 이 시점에서 우리는 저장하고 싶은 점수의 수나 점수 자체를 지정하지 않았습니다.

배열 초기화

이제 우리는 배열을 선언했으니, 그 크기를 지정해보겠습니다. 몇 가지 방법으로 이를 할 수 있습니다:

방법 1: 크기 지정

int[] grades = new int[5];

이 문장은 5개의 정수 값을 저장할 수 있는 배열을 만듭니다. 초기에는 모든 요소가 정수의 기본값인 0으로 설정됩니다.

방법 2: 값을 초기화

int[] grades = new int[] { 85, 92, 78, 95, 88 };

여기서 우리는 배열을 만들고 즉시 값을 채워넣고 있습니다. C#은 우리가 5개의 요소를 제공했으므로 5개 요소의 배열을 만들 것으로 인식합니다.

배열에 값 할당

우리가 방법 1을 사용하여 배열을 만들었고, 이제 몇 가지 점수를 추가하고 싶다면, 배열의 각 요소에 접근하여 값을 할당할 수 있습니다:

grades[0] = 85;  // 첫 번째 점수
grades[1] = 92;  // 두 번째 점수
grades[2] = 78;  // 세 번째 점수
grades[3] = 95;  // 네 번째 점수
grades[4] = 88;  // 다섯 번째 점수

C#에서(그리고 대부분의 프로그래밍 언어에서) 배열의 인덱스는 0부터 시작합니다. 첫 번째 요소는 인덱스 0, 두 번째 요소는 인덱스 1, 이와 같습니다.

배열 요소 접근

배열의 요소에 접근하려면 같은 괄호 기호를 사용합니다:

int firstGrade = grades[0];  // 이는 85를 반환합니다
int thirdGrade = grades[2];  // 이는 78를 반환합니다

이제 이 모든 것을 하나의 작은 프로그램으로 결합해보겠습니다:

int[] grades = new int[5];

grades[0] = 85;
grades[1] = 92;
grades[2] = 78;
grades[3] = 95;
grades[4] = 88;

Console.WriteLine("점수는 다음과 같습니다:");
for (int i = 0; i < grades.Length; i++)
{
Console.WriteLine($"학생 {i + 1}: {grades[i]}");
}

이 프로그램은 다음과 같은 출력을 생성합니다:

점수는 다음과 같습니다:
학생 1: 85
학생 2: 92
학생 3: 78
학생 4: 95
학생 5: 88

foreach 루프 사용

C#은 foreach 루프를 제공하여 배열을 돌아다니는 것을 매우 간편하게 만듭니다. 우리는 이전 예제를 foreach 루프로 다시 작성해보겠습니다:

int[] grades = new int[] { 85, 92, 78, 95, 88 };

Console.WriteLine("점수는 다음과 같습니다:");
int studentNumber = 1;
foreach (int grade in grades)
{
Console.WriteLine($"학생 {studentNumber}: {grade}");
studentNumber++;
}

foreach 루프는 자동으로 배열의 각 요소를 순회하며, 각 반복에서 grade 변수에 할당합니다. 이는 배열의 모든 요소를 돌아다니는 더 깨끗하고 가독성이 높은 방법입니다.

다차원 배열

이제까지 우리는 일차원 배열만 다루어왔습니다. 하지만 여러 과목의 점수를 저장하고 싶다면, 다차원 배열이 유용합니다. 3명의 학생이 4개 과목의 점수를 저장할 2차원 배열을 만들어보겠습니다:

int[,] gradeBook = new int[3, 4]
{
{ 85, 92, 78, 95 },
{ 80, 89, 93, 87 },
{ 76, 88, 91, 84 }
};

Console.WriteLine("성적부:");
for (int i = 0; i < 3; i++)
{
Console.Write($"학생 {i + 1}: ");
for (int j = 0; j < 4; j++)
{
Console.Write($"{gradeBook[i, j]} ");
}
Console.WriteLine();
}

이는 다음과 같은 출력을 생성합니다:

성적부:
학생 1: 85 92 78 95
학생 2: 80 89 93 87
학생 3: 76 88 91 84

배열 메서드

C#은 배열을 다루는 데 유용한 여러 메서드를 제공합니다. 여기 몇 가지 흔히 사용하는 메서드를 소개합니다:

메서드 설명 예제
Array.Sort() 배열의 요소를 정렬합니다 Array.Sort(grades);
Array.Reverse() 배열의 요소를 역순으로 만듭니다 Array.Reverse(grades);
Array.Find() 지정된 기준을 만족하는 첫 번째 요소를 찾습니다 int firstPassingGrade = Array.Find(grades, grade => grade >= 60);
Array.FindAll() 지정된 기준을 만족하는 모든 요소를 찾습니다 int[] passingGrades = Array.FindAll(grades, grade => grade >= 60);
Array.IndexOf() 지정된 값의 첫 번째 발생 인덱스를 반환합니다 int index = Array.IndexOf(grades, 95);

이 메서드 중 몇 가지를 사용하는 빠른 예제를 보여드리겠습니다:

int[] grades = new int[] { 85, 92, 78, 95, 88 };

Array.Sort(grades);
Console.WriteLine("정렬된 점수:");
foreach (int grade in grades)
{
Console.Write($"{grade} ");
}
Console.WriteLine();

int highestGrade = grades[grades.Length - 1];
Console.WriteLine($"최고 점수는: {highestGrade}");

int lowestGrade = grades[0];
Console.WriteLine($"최저 점수는: {lowestGrade}");

이 프로그램은 다음과 같은 출력을 생성합니다:

정렬된 점수:
78 85 88 92 95
최고 점수는: 95
최저 점수는: 78

이제 C# 배열에 대한 흥미로운 여정을 마치셨습니다. 연습이 완벽을 이루는 열쇠라는 것을 기억하세요, 그러니 이 개념들을 실험하고 다양한 유형의 배열을 만들어보세요. 다차원 배열을 놀아보고 다양한 배열 메서드를 탐험해보세요. 얼마 지나지 않아 복잡한 데이터 구조를 쉽게 소환할 수 있는 배열 마법사가 될 것입니다!

미래의 프로그래머 여러분, 행복하게 코딩하세요! ??

Credits: Image by storyset