본문 바로가기

C#/기본 문법

C# List

 

 

 

 

전체 코드


 

using System.Collections;
using System.Collections.Generic;

namespace Rookiss_CSharp
{
    class Program()
    {
        static void Main(string[] args)
        {
            int[] arr = new int[10];
            // 배열의 단점 : 값의 사이즈가 고정됨
            // arr[20] = 10;

            // ex) 미리 큰 사이즈로 고정 - 배열을 미리 크게 잡아서 1000개로 만들면 메모리 낭비
            // int[] arr = new int[1000];

            // 크기를 유동적으로 늘릴수 있는 List 사용
            // List <- 동적 배열
            // 사이즈가 모자르면 크게 잡고 기존 내역을 바꿔치기해서 연결함
            // 중간 삽입, 중간 삭제가 효율적이지 않음(시간복잡도 관련)
            // 중간에 삽입하면 나머지 뒤에 있는 애들도 한칸씩 이동됨
            // 중간에 삭제하면 뒤에 있는 애들도 한칸씩 앞으로 떙기고 끝은 지워짐

            // *연결 리스트(LinkedList) * *는 중간 삽입/삭제가 O(1)으로 효율적이지만,
            // **배열 기반 리스트(ArrayList 또는 벡터)**는 삽입/삭제 시 해당 요소를 기준으로 앞뒤의 모든 데이터를 이동시켜야 하므로 O(n)의 시간 복잡도를 가집니다

            // System.Collections.Generic.List<T> 클래스 : 배열 기반 리스트(ArrayList)
            // 인덱스 접근(읽기): 인덱스를 통한 빠른 접근 가능(평균적으로 O(1) 시간 복잡도).
            // 데이터 삽입/ 삭제: 배열의 중간에 데이터를 삽입하거나 삭제할 경우, 그 뒤의 모든 요소들을 이동시켜야 하므로 상대적으로 느립니다(O(n) 시간 복잡도).
            // 메모리: 요소들이 메모리상에 연속적으로 저장됩니다.

            List<int> list = new List<int>();

            // 없는데 접근시 ArgumentOutOfRangeException 에러
            // list[0] = 1;

            for (int i = 0; i < 5; i++)
            {
                list.Add(i);
            }

            // 삽입, 삭제 : 배열에서는 지원하지 않지만 list에서 지원함
            // .Add(item) : 맨뒤에 item을 집어넣음
            // .Insert(index, item) : 특정 index에 item을 집어넣음

            // 삽입
            // 3번째에 값을 추가하고 싶다면
            // [0, 1, 2, 3, 4] -> [0, 1, 999, 2, 3, 4]
            // list.Insert(2, 999);

            // 삭제
            // .Remove(item) : item과 동일한 첫번째 값 삭제
            // return bool(삭제여부)
            // ex) .Remove(3)
            // [3, 1, 2, 3, 3]  -> [1, 2, 3, 3]

            bool success = list.Remove(3);
            // [0, 1, 2, 3, 4] -> [0, 1, 2, 4]


            // .RemoveAt(index) : 특정 index에 위치한 값 삭제
            list.RemoveAt(0);
            // [0, 1, 2, 4] -> [1, 2, 4]


            // 자주 사용하는 함수
            // .Clear() : 전체 삭제
            list.Clear();


            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

            foreach (int num in list)
            {
                Console.WriteLine(num);
            }
        }
    }
}

 

 

 

 

 

 

 


 

 

 

출처


https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N

 

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문| Rookiss - 인프런 강

현재 평점 4.9점 수강생 6,987명인 강의를 만나보세요. 기초 프로그래밍 지식이 없는 사람들을 위한 C# 프로그래밍 기초 강의입니다. 문법 암기 위주의 수업이 아니라, 최대한 필요한 부분만을 요

www.inflearn.com

52강 리스트

'C# > 기본 문법' 카테고리의 다른 글

C# Dictionary  (0) 2025.11.20
C# 다차원 배열, GetLength()  (0) 2025.11.20
C# 배열 연습문제  (0) 2025.11.18
C# 배열  (0) 2025.11.13
C# TextRPG2  (0) 2025.11.13