IMCAT.DEV
로그인 가입
C# 입문 자료구조

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("오렌지"); // 존재하지 않는 요소 삭제
  • 주의사항: Remove 메서드는 삭제할 요소가 존재할 경우에만 작동하므로, 존재하지 않는 요소를 삭제하려고 하면 아무런 변화가 없습니다.
  • 6. 정리

  • 배열, 리스트, 사전, 집합 등 다양한 데이터 구조를 이해하고 활용할 수 있어야 합니다.
  • 각 데이터 구조는 특정 상황에서 최적의 성능을 발휘하므로, 적재적소에 사용해야 합니다.
  • 다음 단계로는 고급 데이터 구조(스택, 큐, 트리 등) 및 알고리즘을 학습하는 것이 좋습니다.