배열 Array
동일한 자료형의 값들이 연속적으로 저장되는 자료 구조
1) 일차원 배열
/* 데이터타입[] 배열명 = new 데이터타입[배열크기] */
int[] array1 = new int[5]; // 크기가 5인 int형 배열 선언
string[] array2 = new string[3]; // 크기가 3인 string형 배열 선언
/* 바로 값 넣으며 생성 */
in[] array3 = { 1, 2, 3, 4 };
// 배열 초기화
array1[0] = 1;
array1[1] = 2;
array1[2] = 3;
array1[3] = 4;
array1[4] = 5;
// array1 = [1,2,3,4,5];
int num = 0;
num = array1[0]; // 1
배열의 길이는 Length
2) 다차원 배열
/* 데이터타입[,] 배열명 = new 데이터타입[행 크기, 열 크기] */
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;
array3 도식화
[ 행 인덱스, 열 인덱스 ] 값 | ||
[ 0, 0 ] 1 | [ 0, 1 ] 2 | [ 0, 2 ] 3 |
[ 1, 0 ] 4 | [ 1, 1 ] 5 | [ 1, 2 ] 6 |
2차원 배열과 3차원 배열의 선언과 동시에 초기화 사례
// 선언과 함께 초기화
int[,] array2D = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
// 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 } }
};
컬렉션
배열과 유사하지만, 크기가 가변적이라는 게 큰 특징!!
사용하기 위해서 using Sytstem.Collections.Generic으로 네임스페이스를 추가해야 함!
01) List
Linked-List 기반으로 동적으로 메모리를 활용하는 자료 구조
using System.Collections.Generic;
/* List<자료타입> 콜렉션명 = new List<자료타입>() */
List<int> numbers = new List<int>(); // 빈 리스트 생성
/* 리스트에 데이터 추가 */
numbers.Add(1); // [1]
numbers.Add(2); // [1 -> 2]
numbers.Add(3); // [1 -> 2 -> 3]
/* 리스트에서 데이터 제거 */
numbers.Remove(2); // 값이 2인 요소 제거, [1 -> 3]
numbers.RemoveAt(0); // 인덱스가 0인 요소 제거, [3]
/* foreach 가능 */
foreach(int number in numbers)
{
Console.WriteLine(number);
}
리스트의 길이는 Count
02) Dictionary
자바스크립트의 Object와 유사한 자료구조로, key와 value로 구성, 다만 Dictionary는 중복된 key를 가질 수 없음!!
using System.Collections.Generic;
/* Dictionary<key자료타입,value자료타입> 콜렉션명 = new Dictionary<key자료타입,value자료타입>() */
Dictionary<string, int> scores = new Dictionary<string, int>();
/* 딕셔너리에 데이터 추가 */
scores.Add("Alice", 100);
scores.Add("Bob", 80);
scores.Add("Charlie", 90);
/* 딕셔너리에서 데이터 제거 - key 입력 */
scores.Remove("Bob");
/* foreach 가능 */
foreach(KeyValuePair<string, int> pair in scores)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
03) Stack
그 유명한 스택 자료구조! LIFO 후입선출!
using System.Collections.Generic;
/* Stack<자료타입> 콜렉션명 = new Stack<자료타입>() */
Stack<int> stack1 = new Stack<int>();
/* Stack에 요소 추가 */
stack1.Push(1);
stack1.Push(2);
stack1.Push(3);
/* Stack에서 요소 제거 및 가져오기 */
int value = stack1.Pop(); // 3 (마지막에 추가된 요소)
04) Queue
그 유명한 큐 자료구조! FIFO 선입선출!
using System.Collections.Generic;
/* Queue<자료타입> 콜렉션명 = new Queue<자료타입>() */
Queue<int> queue1 = new Queue<int>();
/* Queue에 요소 추가 */
queue1.Enqueue(1);
queue1.Enqueue(2);
queue1.Enqueue(3);
/* Queue에서 요소 제거 및 가져오기 */
int value = queue1.Dequeue(); // 1 (가장 먼저 추가된 요소)
05) HashSet
자바스크립트의 Set과 유사한 자료구조! 중복되는 요소가 없다는 게 가장 큰 특징
using System.Collections.Generic;
/* HashSet<자료타입> 콜렉션명 = new HashSet<자료타입>() */
HashSet<int> set1 = new HashSet<int>();
/* HashSet에 요소 추가 */
set1.Add(1);
set1.Add(2);
set1.Add(3);
/* HashSet에서 요소 제거 */
set1.Remove(2);
/* foreach 가능 */
foreach (int element in set1)
{
Console.WriteLine(element);
}
'C# 공부' 카테고리의 다른 글
C# 기본기 05 - 인터페이스와 열거형(Enums) (0) | 2025.02.10 |
---|---|
C# 기본기 04 - 클래스, 상속, 제너릭 (0) | 2025.02.10 |
C# 기본기 03 - 메서드와 구조체 (0) | 2025.02.10 |
C# 기본기 01 - 기본 자료형, 형 변환, 문자열 (0) | 2025.02.10 |