학습
C# 기본 데이터 구조 사용하기
C# 기본 데이터 구조 사용하기 — 초급
기본 데이터 구조 사용하기
1. 도입 (왜 배워야 하는가)
프로그래밍에서 데이터 구조는 데이터를 저장하고 조작하는 방식입니다. C#에서 기본 데이터 구조를 잘 이해하지 못하면, 복잡한 데이터 처리를 효율적으로 수행할 수 없습니다. 예를 들어, 쇼핑몰에서는 고객의 장바구니에 담긴 상품 목록을 관리해야 합니다. 이때 적절한 데이터 구조가 없다면 상품을 추가하거나 삭제하는 작업이 비효율적이게 되어 성능 저하와 같은 문제가 발생할 수 있습니다. 따라서, 기본 데이터 구조를 이해하는 것은 효율적인 프로그래밍을 위해 필수적입니다.
2. 핵심 개념 설명
기본 데이터 구조에는 배열, 리스트, 사전, 집합 등이 있습니다. 각 데이터 구조는 특정 상황에서 최적의 성능을 발휘합니다.
| 데이터 구조 | 설명 | 비유 |
|---|---|---|
| 배열 | 고정된 크기의 연속적인 데이터 | 정리된 책장 |
| 리스트 | 크기가 가변적인 데이터 | 가방에 담을 수 있는 물건들 |
| 사전 | 키-값 쌍으로 구성된 데이터 | 주소록 (이름-전화번호) |
| 집합 | 중복이 없는 데이터 | 친구 목록 (중복 X) |
2.1 배열
배열은 고정된 크기의 연속적인 데이터 저장소입니다. 예를 들어, 5개의 정수를 저장할 수 있는 배열을 생각해 볼 수 있습니다.
2.2 리스트
리스트는 동적으로 크기가 조정되는 데이터 구조로, 데이터를 쉽게 추가하거나 삭제할 수 있는 장점이 있습니다.
2.3 사전
사전은 키와 값을 쌍으로 저장하여, 특정 키를 사용해 값을 빠르게 검색할 수 있게 해줍니다.
3. 기본 코드 예제
3.1 배열 사용 예제
using System;
class Program
{
static void Main()
{
int[] numbers = new int[5]; // 크기가 5인 정수형 배열 생성
numbers[0] = 10; // 첫 번째 요소에 10 저장
numbers[1] = 20; // 두 번째 요소에 20 저장
numbers[2] = 30; // 세 번째 요소에 30 저장
numbers[3] = 40; // 네 번째 요소에 40 저장
numbers[4] = 50; // 다섯 번째 요소에 50 저장
Console.WriteLine(numbers[2]); // 배열의 세 번째 요소 출력
}
}
실행 결과:
30
int[] numbers = new int[5];: 크기가 5인 정수형 배열을 생성합니다.numbers[0] = 10;: 배열의 첫 번째 위치에 10을 저장합니다.Console.WriteLine(numbers[2]);: 배열의 세 번째 위치에 저장된 30을 출력합니다.
3.2 리스트 사용 예제
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> shoppingList = new List<string>(); // 문자열 리스트 생성
shoppingList.Add("사과"); // 리스트에 사과 추가
shoppingList.Add("바나나"); // 리스트에 바나나 추가
shoppingList.Remove("사과"); // 리스트에서 사과 삭제
foreach (string item in shoppingList)
{
Console.WriteLine(item); // 남아 있는 아이템 출력
}
}
}
실행 결과:
바나나
List<string> shoppingList = new List<string>(); : 문자열을 저장할 수 있는 리스트를 생성합니다.shoppingList.Add("사과"); : 리스트에 "사과"를 추가합니다.shoppingList.Remove("사과"); : "사과"를 리스트에서 삭제합니다.foreach (string item in shoppingList) : 리스트의 모든 아이템을 순회하며 출력합니다.4. 실전 활용 예제
4.1 쇼핑몰 장바구니 구현
쇼핑몰에서 고객이 선택한 상품을 장바구니에 담고 관리하는 경우 리스트를 사용할 수 있습니다. 사용자가 선택한 상품을 쉽게 추가하거나 삭제할 수 있습니다.
4.2 주소록 관리
사전을 사용하여 친구의 이름과 전화번호를 키-값 쌍으로 저장할 수 있습니다. 이렇게 하면 이름을 통해 전화번호를 빠르게 검색할 수 있습니다.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, string> addressBook = new Dictionary<string, string>(); // 주소록 생성
addressBook.Add("홍길동", "010-1234-5678"); // 이름-전화번호 추가
addressBook.Add("김철수", "010-5678-1234");
Console.WriteLine(addressBook["홍길동"]); // 홍길동의 전화번호 출력
}
}
실행 결과:
010-1234-5678
5. 흔한 실수와 주의사항
5.1 배열의 크기 초과
int[] numbers = new int[5];
numbers[5] = 10; // IndexOutOfRangeException 발생
numbers[4] = 10; : 배열의 인덱스는 0부터 시작하므로, 최대 인덱스는 4입니다.5.2 리스트의 Remove 메서드 사용
List<string> fruits = new List<string> { "사과", "바나나" };
fruits.Remove("오렌지"); // 존재하지 않는 요소 삭제