개발꿈나무
[C# 교과서] 5. C# 기초(4) - 배열 사용하기 본문
반응형
배열 사용하기
컬렉션
컬렉션은 이름 하나로 데이터 여러 개를 담을 수 있는 그릇
EX) 배열(array), 리스트(list), 사전(dictionary)
배열(array)
배열은 이름 하나로 데이터 여러개를 저장하는 데이터 구조
- 변수 여러개를 이름 하나로 관리
- 요소들의 순서 있는 집합, 각 요소는 0부터 시작하는 인덱스로 접근 가능
- 배열 하나에는 데이터 형식 하나만 보관 가능
- 배열은 메모리의 연속된 공간을 미리 할당하고, 이를 대괄호([])와 0부터 시작하는 정수형 인덱스를 사용하여 접근
- 배열을 선언할 때는 new 키워드로 배열을 생성한 후 사용
- 배열에서 값 하나는 요소(element) 또는 항목(item)으로 표현
문자열에서 배열 사용하기
string arr = "C#8";
Console.WriteLine(arr[0]); // C
Console.WriteLine(arr[1]); // #
Console.WriteLine(arr[2]); // 8
Console.WriteLine("ABC"[0]); // A
Console.WriteLine("ABC"[1]); // B
Console.WriteLine("ABC"[2]); // C
배열 선언하기
int[] numbers;
numbers = new int[3];
// OR
int[] numbers = new int[3];
1차원 배열 선언 및 초기화
//[?] 1차원 배열을 선언/초기화하는 프로그램
using System;
class ArrayOne1
{
static void Main()
{
int[] intArray; // 일차원 배열 선언
intArray = new int[3]; // 메모리 영역 확보(0, 1, 2)
// -> int[] intArray = new int[3];
intArray[0] = 1; // 배열 초기화
intArray[1] = 2;
intArray[2] = 3;
// -> var intArray = new int[] {1, 2, 3}; 선언과 동시에 초기화
//[1] for 문 사용 출력: 정확하게 배열의 범위를 알고 있을 때
for (int i = 0; i < 3; i++) // 배열 참조
{
Console.WriteLine($"{i}번째 인덱스: {intArray[i]}");
}
//[2] foreach 문 사용 출력: intArray에 데이터가 있는 동안 반복
foreach (int intValue in intArray)
{
Console.WriteLine("{0}", intValue);
}
}
}
/*
<result>
0번째 인덱스 : 1
1번째 인덱스 : 2
2번쨰 인덱스 : 3
1
2
3
*/
Length 속성으로 배열 크기 구하기
char[] characters = {'a', 'b', 'c', 'd'}; // 문자 배열
Console.WriteLine(characters.Length); // 4
배열을 사용하여 국어 점수의 총점과 평균 구하기
using System;
class ArrayTotalAvg
{
static void Main()
{
int[] kor = new int[3]; // 3개의 int 형식 요소를 갖는 1차원배열 선언
int sum = 0; // 합계가 담길 변수 sum 선언과 동시에 0으로 초기화
float avg = 0; // 평균이 담길 실수형 변수 avg 선언과 동시에 0으로 초기화
kor[0] = 100; // 배열의 각 요소에 값 대입
kor[1] = 90;
kor[2] = 80;
sum = kor[0] + kor[1] + kor[2]; // 총점 계산
avg = sum / (float)3.0; // 평균 계산
// 총점과 평균 출력: 평균은 소수점 2자리까지 출력
Console.WriteLine($"총점: {sum}, 평균: {avg:0.00}");
}
}
// result: 총점 : 270, 평균 : 90.00
다차원 배열
다차원 배열은 2차원 배열 및 3차원 배열처럼 차원이 2 이상인 배열을 뜻함
2차원 배열 생성 및 반복문으로 사용하기
//[?] 이차원 배열 생성 및 반복문으로 사용하기
using System;
class ArrayTwo1
{
static void Main()
{
int[,] intArray; // 2차원 배열 선언
intArray = new int[2, 3]; // 2 * 3개의 요소 생성
// -> int[,] int Array = new int[2, 3];
intArray[0, 0] = 1; // 2차원 배열 초기화
intArray[0, 1] = 2;
intArray[0, 2] = 3;
intArray[1, 0] = 4;
intArray[1, 1] = 5;
intArray[1, 2] = 6;
// -> int [,] intArray = new int[2, 3]{{1, 2, 3}, {4, 5, 6}};
// -> int [,] intArray = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write($"{intArray[i, j]}_");
}
Console.Write("\n"); // 행 출력 후 개행
}
}
}
/*
<result>
1_2_3_
4_5_6_
*/
2차원 배열[3, 3]에 행과 열이 같으면 1, 다르면 0을 입력한 후 출력하기
// 3행 3열짜리 2차원 배열에 행과 열이 같으면 1, 다르면 0을 입력한 후 출력하기
using System;
class ArraySameIndex
{
static void Main()
{
int[,] arr = new int[3, 3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (i == j)
{
arr[i, j] = 1; // 행과 열이 같으면 1로 채우기
}
else
{
arr[i, j] = 0;
}
Console.Write(arr[i, j]);
}
Console.WriteLine();
}
}
}
/*
<result>
100
010
001
*/
2차원 배열을 사용하여 합계와 평균 구하기
using System;
class ArraySumAverage
{
static void Main()
{
int[,] scores =
{
{ 90, 100, 0, 0 },
{ 80, 90, 0, 0 },
{ 100, 80, 0, 0 }
};
for (int i = 0; i < 3; i++)
{
scores[i, 2] = scores[i, 0] + scores[i, 1]; // SUM(합계)
scores[i, 3] = scores[i, 2] / 2; // AVERAGE(평균)
}
Console.WriteLine("국어 영어 합계 평균");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
// 각 점수를 4칸 잡고 오른쪽 정렬해서 출력
Console.Write($"{scores[i, j],4} ");
}
Console.WriteLine();
}
}
}
/*
<result>
국어 영어 합계 평균
90 100 190 95
80 90 170 85
100 80 180 90
*/
3차원 배열을 만들고 for 문 3개로 출력하기
using System;
class ArrayThree
{
static void Main()
{
int[,,] intArray = new int[2, 3, 4]
{
// 0층
{ { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } },
// 1층
{ { 13, 14, 15, 16 }, { 17, 18, 19, 20 }, { 21, 22, 23, 24 } }
};
for (int i = 0; i < 2; i++) // 층 반복
{
for (int j = 0; j < 3; j++) // 행 반복
{
for (int k = 0; k < 4; k++) // 열 반복
{
Console.Write("{0,2} ", intArray[i, j, k]);
}
Console.Write("\n");
}
Console.WriteLine();
}
}
}
/*
<result>
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22 23 24
*/
반응형
'C# 기초' 카테고리의 다른 글
[C# 교과서] 7. C# 활용(1) - 닷넷 API(구조체, 열거형, 클래스) (1) | 2022.01.14 |
---|---|
[C# 교과서] 6. C# 기초(5) - 함수 사용하기 (0) | 2022.01.14 |
[C# 교과서] 4. C# 기초(3) - 제어문, 조건문, 반복문 (0) | 2022.01.13 |
[C# 교과서] 3. C# 기초(2) - 연산자 (0) | 2022.01.11 |
[C# 교과서] 2. C# 기초(1) - 변수, 데이터 형식 (0) | 2022.01.11 |
Comments