C# 배열: 여러 값을 저장하는 초보자 가이드
안녕하세요, 열정적인 프로그래머 여러분! 오늘 우리는 C# 배열의 세계에 흥미로운 여정을 떠납니다. 배열은 동일한 유형의 여러 항목을 보관할 수 있는 마법의 컨테이너라고 생각해보세요. 당신의 좋아하는 쵸코レート 상자를 생각해보세요. 하지만 이번에는 쵸코レート 대신 데이터를 저장하고 있습니다!
배열이란?
자, 구체적인 내용으로 들어가기 전에 배열이 무엇인지 이해해보겠습니다. 배열은 동일한 유형의 여러 값을 단일 변수에 저장할 수 있게 해주는 데이터 구조입니다. 당신이 교사(저처럼!)이고 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