728x90
반응형

 

줄을 서듯 자료를 차례차례 저장해요! 

자료가 여러 개 있을 때, 컴퓨터는 줄 세우듯 순서대로 정리할 수 있어요. 이렇게 줄을 세워 저장하는 방식이 바로 **리스트(list)**예요!

 


리스트의 특징은?

  • 순서가 있어요 (누가 먼저 들어왔는지 알아요)
  • 자료를 쉽게 추가하거나 삭제할 수 있어요
  • 자료의 개수가 정해져 있지 않아도 돼요!

 그래서 리스트는 자료가 많고 바뀔 일이 많을 때 아주 좋아요!


배열과 리스트의 차이는?

비교 항목 배열 (Array) 리스트 (List)

크기 처음에 크기를 정해야 해요 자유롭게 늘어나요
자료 추가/삭제 어려워요 쉬워요
사용 예 점수 5개 저장 채팅방 메시지 저장

 


리스트 예시 (생각하기 쉬운 표현)

예를 들어, 내 친구 목록을 저장한다면?

친구목록 = ["지민", "서준", "유나"]

그리고 새로운 친구를 추가할 수도 있어요:

친구목록에 "하린" 추가!

C언어에서는 배열처럼 표현하지만, 리스트 기능은 따로 만들어야 해요

char* friends[4] = {"지민", "서준", "유나", "하린"};

 배열로 만들긴 하지만, 리스트처럼 쓰는 연습도 해볼 수 있어요!

 


 오늘 배운 것 정리

리스트는 자료를 순서대로 저장하고 자유롭게 추가하거나 뺄 수 있는 구조예요. 자료가 늘거나 줄 수 있는 상황에 딱 좋아요!


다음 편 예고 

다음 시간에는 딕셔너리란 무엇일까? 를 배워볼 거예요!

이름표(키)를 붙여서 자료를 더 똑똑하게 찾을 수 있는 방법이에요! 

728x90
반응형
728x90
반응형

 

자료가 많아지면 정리가 필요해! 

컴퓨터 안에는 숫자, 글자 같은 자료가 엄청 많이 들어 있어. 그걸 하나씩 관리하면 너무 힘들겠지?

 그래서 컴퓨터는 자료를 묶어서 정리하는 구조를 사용해! 이걸 바로 자료구조(data structure) 라고 불러.

 


자료구조는 왜 필요할까?

예를 들어, 학급 친구 30명의 이름을 저장한다고 해보자.

  • 이름을 하나씩 변수로 만들면 너무 복잡해!
string name1 = "지민";
string name2 = "서준";
string name3 = "유나";
... 계속 30개!
  • 자료구조를 쓰면 이렇게!
string names[30];

 이름을 하나의 덩어리로 묶어서 저장할 수 있어!

 


대표적인 자료구조 종류

자료구조 이름 생김새 설명

배열 (Array) [1, 2, 3] 같은 종류의 자료를 순서대로 저장
리스트 (List) 유연한 길이의 [a, b, c] 추가/삭제가 쉬운 자료 덩어리
스택 (Stack) 쌓이는 종이컵 나중에 넣은 게 먼저 나온다 (LIFO)
큐 (Queue) 줄 서기 먼저 넣은 게 먼저 나온다 (FIFO)
딕셔너리 (Dictionary) {"이름": "지민"} 이름표(키)를 붙여서 저장

 


실제 코드 예시 (배열)

int scores[5] = {90, 85, 70, 100, 95};

printf("첫 번째 점수: %d\n", scores[0]); // 90 출력

 배열은 여러 자료를 순서대로 저장하고 꺼내는 데 좋아!


 오늘 배운 것 정리

자료구조는 여러 개의 자료를 편하게 정리하는 방법이야. 배열, 리스트, 딕셔너리 등 다양한 구조가 있어!


다음 편 예고 

다음 시간에는 리스트란 무엇일까? 를 더 자세히 배워볼 거야!

자료를 순서대로 쭉 늘어놓고 다루는 리스트에 대해 알아보자! 

728x90
반응형
728x90
반응형

그래프(Graph) 완전 이해하기

이전 글에서는 트리(Tree)에 대해 알아봤습니다.
이번에는 복잡한 관계를 표현하는 자료구조, 그래프(Graph) 에 대해 자세히 정리해봅니다.


1. 그래프란?

그래프는 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조입니다.

  • 정점(Vertex): 데이터의 단위 (노드라고도 함)
  • 간선(Edge): 정점과 정점을 연결하는 선
  • 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph)가 있음

2. 그래프의 기본 용어

용어 설명

정점(Vertex) 데이터를 저장하는 노드
간선(Edge) 두 정점을 연결하는 선
인접(Adjacent) 두 정점이 간선으로 직접 연결된 관계
차수(Degree) 정점에 연결된 간선의 수
경로(Path) 정점들을 순서대로 따라간 길
사이클(Cycle) 시작 정점으로 다시 돌아오는 경로

3. 그래프 표현 방법

방법 설명

인접 행렬(Adjacency Matrix) 2차원 배열로 정점 간 연결 여부 표시
인접 리스트(Adjacency List) 각 정점마다 연결된 정점 리스트 저장

 인접 행렬 예시

int[,] graph = new int[4, 4]
{
    {0, 1, 0, 0},
    {1, 0, 1, 1},
    {0, 1, 0, 1},
    {0, 1, 1, 0}
};

 인접 리스트 예시

using System.Collections.Generic;

List<int>[] graph = new List<int>[4];
for (int i = 0; i < 4; i++)
{
    graph[i] = new List<int>();
}

graph[0].Add(1);
graph[1].Add(0); graph[1].Add(2); graph[1].Add(3);
graph[2].Add(1); graph[2].Add(3);
graph[3].Add(1); graph[3].Add(2);

4. 실생활 예시로 이해하기

  • 그래프 = 지하철 노선도
    • 각 역(정점)이 노선(간선)으로 연결됨
  • 그래프 = 소셜 네트워크
    • 사용자(정점)와 친구 관계(간선)를 표현

5. 그래프의 활용 사례

사용 예시 설명

네트워크 경로 찾기 인터넷 라우팅, 네트워크 최단 경로 탐색
소셜 네트워크 분석 친구 추천, 커뮤니티 분석
지도 및 내비게이션 최단 거리, 최단 시간 경로 탐색

이번 글에서는 그래프(Graph) 의 개념, 기본 용어, 표현 방법, C# 코드 예시를 정리했습니다.

  • 정점과 간선으로 다양한 관계를 표현
  • 인접 행렬과 인접 리스트로 그래프 구현 가능
  • 네트워크, 소셜 미디어, 지도 등 다양한 분야에서 활용

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 11편  (6) 2025.04.23
자료구조 시리즈 10편  (2) 2025.04.22
자료구조 시리즈 8편  (2) 2025.04.22
자료구조 시리즈 7편  (2) 2025.04.22
자료구조 시리즈 6편  (2) 2025.04.21
728x90
반응형

해시테이블(Hash Table) 완전 이해하기

이전 글에서는 연결 리스트(Linked List)에 대해 알아봤습니다.
이번에는 키(Key)와 값(Value) 쌍으로 데이터를 저장하는 해시테이블(Hash Table) 에 대해 자세히 정리해봅니다.


1. 해시테이블이란?

해시테이블은 데이터를 (키, 값) 쌍으로 저장하고, 키를 통해 값을 빠르게 검색할 수 있는 자료구조입니다.

  • 키를 해시 함수(Hash Function)를 통해 인덱스로 변환하여 저장
  • 검색, 삽입, 삭제 모두 평균적으로 매우 빠름 (O(1))

2. 해시테이블의 특징

항목 설명

접근 속도 평균 O(1) (매우 빠름)
키 중복 여부 키는 고유해야 함 (같은 키 존재 불가)
충돌 처리 체이닝(연결 리스트), 오픈 어드레싱 방식 등 사용
메모리 사용 배열보다 크지만 빠른 접근성 제공

3. 해시테이블 사용 예시 (C# 기준)

C#에서는 Dictionary<TKey, TValue> 클래스를 사용합니다.

 선언과 초기화

using System.Collections.Generic;

Dictionary<string, int> scores = new Dictionary<string, int>();

 요소 추가

scores.Add("Alice", 90);
scores.Add("Bob", 85);
scores["Charlie"] = 95; // 인덱서 방식 추가도 가능

 값 검색

int aliceScore = scores["Alice"];
Console.WriteLine(aliceScore); // 90

 키 존재 여부 확인

if (scores.ContainsKey("Dave"))
{
    Console.WriteLine("Dave의 점수 존재함");
}

 요소 삭제

scores.Remove("Bob");

 전체 순회

foreach (var pair in scores)
{
    Console.WriteLine($"{pair.Key}: {pair.Value}");
}

4. 실생활 예시로 이해하기

  • 해시테이블 = 전화번호부
    • 이름(키)을 알면 바로 전화번호(값)를 찾을 수 있음
  • 해시테이블 = 학생 학번 조회 시스템
    • 학번(키)으로 학생 정보를 빠르게 검색

5. 해시테이블의 활용 사례

사용 예시 설명

데이터베이스 인덱싱 빠른 검색을 위해 키-값 인덱스 사용
캐시(Cache) 시스템 이미 계산된 결과를 저장해 빠르게 접근
중복 체크 특정 값의 존재 여부를 빠르게 판단

이번 글에서는 해시테이블(Hash Table) 의 개념, 특징, C# 코드 사용법을 정리했습니다.

  • 키를 통해 빠르게 값에 접근 가능
  • 데이터 검색, 삽입, 삭제가 평균적으로 O(1)
  • Dictionary 클래스를 통해 쉽게 구현 가능

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 9편  (0) 2025.04.22
자료구조 시리즈 8편  (2) 2025.04.22
자료구조 시리즈 6편  (2) 2025.04.21
자료구조 시리즈 5편  (0) 2025.04.21
자료구조 시리즈 4편  (0) 2025.04.21
728x90
반응형

연결 리스트(Linked List) 완전 이해하기

이전 글에서는 큐(Queue)에 대해 알아봤습니다.
이번에는 노드(Node)들이 포인터로 연결된 구조인 연결 리스트(Linked List) 를 자세히 정리해봅니다.

 

1. 연결 리스트란?

연결 리스트는 각 노드가 데이터와 다음 노드에 대한 포인터를 함께 저장하는 자료구조입니다.

  • 동적 크기 조정 가능
  • 삽입과 삭제가 빠름 (특히 중간 삽입/삭제)
  • 메모리에 연속적으로 저장될 필요가 없음

2. 연결 리스트의 특징

항목 설명

삽입/삭제 빠름 (O(1) - 위치만 알면)
접근 느림 (O(n) - 처음부터 순회 필요)
메모리 사용 포인터 공간 추가 필요
크기 조정 동적 크기 조정 가능

3. 연결 리스트 종류

종류 설명

단일 연결 리스트(Singly Linked List) 한 방향(다음 노드만)으로 연결
이중 연결 리스트(Doubly Linked List) 앞뒤로 양방향 연결
원형 연결 리스트(Circular Linked List) 마지막 노드가 첫 번째 노드를 가리킴

4. 단일 연결 리스트 사용 예시 (C# 기준)

C# 내장 LinkedList<T> 클래스를 사용할 수 있습니다.

 선언과 초기화

using System.Collections.Generic;

LinkedList<string> list = new LinkedList<string>();

 요소 추가

list.AddLast("노드1");
list.AddLast("노드2");
list.AddFirst("노드0");

 요소 순회

foreach (var item in list)
{
    Console.WriteLine(item);
}

 특정 노드 뒤에 삽입

LinkedListNode<string> node = list.Find("노드1");
list.AddAfter(node, "노드1.5");

 요소 삭제

list.Remove("노드2");

5. 실생활 예시로 이해하기

  • 연결 리스트 = 지하철 칸
    • 각 칸(노드)이 다음 칸을 이어서 연결됨
    • 중간 칸 추가/제거가 쉽고 빠름

6. 연결 리스트의 활용 사례

사용 예시 설명

메모리 효율적 관리 필요할 때마다 노드를 동적 생성
Undo/Redo 구현 이전 작업으로 이동할 때 양방향 연결 리스트 사용
캐시 구현(LRU 캐시) 최근 사용 데이터를 빠르게 관리

이번 글에서는 연결 리스트(Linked List) 의 개념, 종류, C# 코드 사용법을 정리했습니다.

  • 배열과 다르게 메모리에 연속 저장되지 않음
  • 중간 삽입/삭제가 매우 빠름
  • 단일, 이중, 원형 연결 리스트 등 다양한 변형이 존재

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 8편  (2) 2025.04.22
자료구조 시리즈 7편  (2) 2025.04.22
자료구조 시리즈 5편  (0) 2025.04.21
자료구조 시리즈 4편  (0) 2025.04.21
자료구조 시리즈 3편  (0) 2025.04.21
728x90
반응형

큐(Queue) 완전 이해하기

이전 글에서는 스택(Stack)에 대해 알아봤습니다.
이번에는 선입선출(FIFO) 구조를 가지는 큐(Queue) 에 대해 자세히 정리해봅니다.


1. 큐란?

큐는 먼저 넣은 데이터가 먼저 나오는 자료구조입니다. (FIFO: First-In, First-Out)

  • 가장 먼저 추가된 데이터가 가장 먼저 제거됨
  • 주로 작업 대기열, 프린터 작업 처리 등에 사용

2. 큐의 특징

항목 설명

삽입(Enqueue) 뒤쪽(Rear)으로 추가
삭제(Dequeue) 앞쪽(Front)에서 제거
조회(Peek) 가장 앞 요소만 확인 (제거는 안 함)
크기 제한 있을 수도 있고 없을 수도 있음

3. 큐 사용 예시 (C# 기준)

 Queue 선언과 초기화

using System.Collections.Generic;

// 빈 큐 생성
Queue<string> queue = new Queue<string>();

 요소 추가 (Enqueue)

queue.Enqueue("첫 번째");
queue.Enqueue("두 번째");
queue.Enqueue("세 번째");

 요소 제거 (Dequeue)

string first = queue.Dequeue();
Console.WriteLine(first); // "첫 번째" 출력

 가장 앞 요소 확인 (Peek)

string currentFirst = queue.Peek();
Console.WriteLine(currentFirst); // "두 번째" 출력 (삭제되지 않음)

 큐 순회

foreach (var item in queue)
{
    Console.WriteLine(item);
}

4. 실생활 예시로 이해하기

  • 큐 = 은행 대기 줄
    • 먼저 온 고객부터 차례로 서비스 받음
  • 큐 = 프린터 출력 대기열
    • 먼저 제출한 문서부터 순서대로 출력

5. 큐의 활용 사례

사용 예시 설명

작업 대기열 여러 작업을 순서대로 처리
너비 우선 탐색(BFS) 그래프 탐색 시 사용
CPU 작업 스케줄링 프로세스를 공평하게 처리

이번 글에서는 큐(Queue) 의 개념, 특징, C# 코드 사용법을 정리했습니다.

  • 먼저 넣은 데이터가 먼저 나오는 구조 (FIFO)
  • 대기열 관리, 순서 처리에 매우 많이 사용

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 7편  (2) 2025.04.22
자료구조 시리즈 6편  (2) 2025.04.21
자료구조 시리즈 4편  (0) 2025.04.21
자료구조 시리즈 3편  (0) 2025.04.21
자료구조 시리즈 2편  (0) 2025.04.20
728x90
반응형

스택(Stack) 완전 이해하기

이전 글에서는 리스트(List)에 대해 알아봤습니다.
이번에는 후입선출(LIFO) 구조를 가지는 스택(Stack) 에 대해 자세히 정리해봅니다.


1. 스택이란?

스택은 나중에 넣은 데이터가 먼저 나오는 자료구조입니다. (LIFO: Last-In, First-Out)

  • 마지막에 추가한 데이터가 가장 먼저 꺼내짐
  • 주로 함수 호출, 실행 취소(Undo) 기능 등에 사용

2. 스택의 특징

항목 설명

삽입(push) 항상 맨 위에 추가
삭제(pop) 항상 맨 위에서 제거
조회(peek) 맨 위 요소만 확인 (제거는 안 함)
크기 제한 있을 수도 있고 없을 수도 있음

3. 스택 사용 예시 (C# 기준)

 Stack 선언과 초기화

using System.Collections.Generic;

// 빈 스택 생성
Stack<string> stack = new Stack<string>();

 요소 추가 (Push)

stack.Push("첫 번째");
stack.Push("두 번째");
stack.Push("세 번째");

 요소 제거 (Pop)

string top = stack.Pop();
Console.WriteLine(top); // "세 번째" 출력

 맨 위 요소 확인 (Peek)

string currentTop = stack.Peek();
Console.WriteLine(currentTop); // "두 번째" 출력 (삭제되지 않음)

 스택 순회

foreach (var item in stack)
{
    Console.WriteLine(item);
}

4. 실생활 예시로 이해하기

  • 스택 = 접시 쌓기
    • 마지막에 올린 접시를 먼저 꺼내야 함
  • 스택 = 웹 브라우저 뒤로 가기
    • 마지막에 방문한 페이지부터 뒤로 이동

5. 스택의 활용 사례

사용 예시 설명

함수 호출 스택 함수 호출 시 복귀 주소 저장
실행 취소(Undo) 기능 가장 최근 작업부터 되돌리기
괄호 짝 맞추기 여는 괄호를 스택에 쌓아 닫는 괄호와 비교

이번 글에서는 스택(Stack) 의 개념, 특징, C# 코드 사용법을 정리했습니다.

  • 나중에 넣은 데이터가 먼저 나오는 구조 (LIFO)
  • 함수 호출 관리, 실행 취소 기능 등에서 매우 많이 사용

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 6편  (2) 2025.04.21
자료구조 시리즈 5편  (0) 2025.04.21
자료구조 시리즈 3편  (0) 2025.04.21
자료구조 시리즈 2편  (0) 2025.04.20
자료구조 시리즈 1편  (0) 2025.04.20
728x90
반응형

리스트(List) 완전 이해하기

이전 글에서는 배열(Array)에 대해 알아봤습니다.
이번에는 배열의 한계를 보완한 자료구조, 리스트(List) 에 대해 자세히 정리해봅니다.


1. 리스트란?

리스트는 데이터의 순서를 유지하면서, 크기를 동적으로 조절할 수 있는 자료구조입니다.

  • 배열처럼 인덱스를 통해 데이터에 접근 가능
  • 필요에 따라 자동으로 크기가 늘어나거나 줄어듬
  • 삽입, 삭제가 배열보다 유연함

2. 리스트의 특징

항목 설명

크기 동적 (필요에 따라 자동 확장)
접근 속도 인덱스로 빠르게 접근 (O(1))
삽입/삭제 속도 끝에 추가는 빠름 (O(1)), 중간 삽입/삭제는 느림 (O(n))
메모리 사용 약간 더 큼 (빈 공간 고려)

3. 리스트 사용 예시 (C# 기준)

 List 선언과 초기화

using System.Collections.Generic;

// 빈 리스트 생성
List<int> numbers = new List<int>();

// 값과 함께 초기화
List<string> fruits = new List<string> { "사과", "바나나", "포도" };

 요소 추가

numbers.Add(10);
numbers.Add(20);

 요소 접근 및 수정

Console.WriteLine(fruits[0]);  // "사과"
fruits[1] = "딸기";             // "바나나"를 "딸기"로 변경

 요소 삽입

fruits.Insert(1, "오렌지"); // 1번 인덱스에 "오렌지" 삽입

 요소 삭제

fruits.Remove("사과");       // "사과" 제거
fruits.RemoveAt(0);          // 0번 인덱스 요소 제거

 리스트 순회

foreach (var fruit in fruits)
{
    Console.WriteLine(fruit);
}

4. 실생활 예시로 이해하기

  • 리스트 = 늘었다 줄었다 하는 책꽂이
    • 책을 추가하면 자동으로 공간이 늘어나고
    • 책을 빼면 자동으로 공간이 줄어드는 유연한 책장

5. 리스트와 배열 비교

항목 배열(Array) 리스트(List)

크기 고정 가변
삽입/삭제 느림 상대적으로 빠름
메모리 작음 약간 큼
선언 방법 간단 약간 복잡 (using 필요)

이번 글에서는 리스트(List) 의 개념, 특징, C# 코드 사용법을 정리했습니다.

  • 리스트는 배열의 고정 크기 문제를 해결한 유연한 자료구조입니다.
  • 삽입/삭제가 용이해 실무에서도 가장 자주 사용됩니다.

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 5편  (0) 2025.04.21
자료구조 시리즈 4편  (0) 2025.04.21
자료구조 시리즈 2편  (0) 2025.04.20
자료구조 시리즈 1편  (0) 2025.04.20
[C#] WinForms 파일 관리 앱 최종  (0) 2025.04.19
728x90
반응형

배열(Array) 완전 정복

이전 글에서는 자료구조의 전체적인 개념을 다뤘습니다.
이번에는 가장 기본이자 중요한 자료구조, 배열(Array) 에 대해 자세히 알아보겠습니다.


1. 배열이란?

배열은 같은 타입의 데이터를 연속적으로 저장하는 자료구조입니다.

  • 인덱스를 사용해 각 요소에 빠르게 접근할 수 있음
  • 메모리 상에 연속된 공간에 저장됨
  • 고정된 크기(생성 시 크기 결정)

2. 배열의 특징

항목 설명

접근 속도 매우 빠름 (O(1))
삽입/삭제 느림 (중간에 삽입/삭제 시 데이터 이동 필요)
메모리 효율 크기 초과/부족 문제 발생 가능
타입 통일성 모든 요소가 같은 타입이어야 함

3. 배열 사용 예시 (C# 기준)

 배열 선언과 초기화

// 방법 1: 크기만 지정
int[] numbers = new int[5];

// 방법 2: 값과 함께 초기화
int[] scores = { 90, 85, 70, 60, 95 };

// 방법 3: new 키워드와 함께 초기화
string[] fruits = new string[] { "사과", "바나나", "포도" };

 배열 접근

Console.WriteLine(scores[0]);  // 첫 번째 요소 출력 (90)
scores[2] = 75;                 // 세 번째 요소 값 수정

 배열 순회 (for문)

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

 배열 순회 (foreach문)

foreach (var score in scores)
{
    Console.WriteLine(score);
}

4. 실생활 예시로 이해하기

  • 배열 = 좌석 번호가 지정된 극장 의자
    • 좌석 번호(인덱스)를 통해 특정 의자(데이터)에 바로 접근 가능
    • 좌석을 추가하거나 삭제하는 것은 매우 번거로움 (구조 변경 필요)

5. 배열의 한계와 대안

문제점 대안

크기가 고정됨 리스트(List) 사용 (가변 크기)
삽입/삭제가 비효율적 연결 리스트(Linked List) 사용

이번 글에서는 배열(Array) 의 개념, 특징, 코드 사용법까지 정리했습니다.

  • 빠른 접근(O(1))이 최대 장점
  • 삽입/삭제에는 약함
  • 크기가 고정되어 있음

 

728x90
반응형

'개발이야기' 카테고리의 다른 글

자료구조 시리즈 4편  (0) 2025.04.21
자료구조 시리즈 3편  (0) 2025.04.21
자료구조 시리즈 1편  (0) 2025.04.20
[C#] WinForms 파일 관리 앱 최종  (0) 2025.04.19
[C#] WinForms 파일 관리 앱 확장 6  (0) 2025.04.19
728x90
반응형

자료구조란 무엇인가?

프로그래밍을 제대로 이해하고 효율적인 프로그램을 만들기 위해서는 자료구조(Data Structure) 를 반드시 알아야 합니다.
이번 시리즈에서는 자료구조의 기본 개념부터 다양한 구조들의 특징과 사용법까지 체계적으로 정리해봅니다.


1. 자료구조란?

자료구조란 데이터를 저장하고 조직하는 방법을 의미합니다.

프로그래밍을 할 때는 수많은 데이터를 다루게 되는데, 이 데이터를 어떻게 효율적으로 저장하고, 관리하고, 접근할 것인지를 정하는 것이 바로 자료구조입니다.

 자료구조가 중요한 이유

  • 속도 향상: 데이터를 빠르게 검색, 삽입, 삭제할 수 있음
  • 메모리 절약: 필요한 만큼만 메모리를 사용함
  • 복잡한 문제 해결: 트리, 그래프 등을 통해 복잡한 관계를 쉽게 표현 가능

2. 자료구조 종류 한눈에 보기

분류 대표 예시 설명

선형 구조 배열, 리스트, 스택, 큐 데이터가 순서대로 나열됨
비선형 구조 트리, 그래프 데이터가 계층적 또는 복잡한 연결 구조를 가짐
해시 기반 구조 해시테이블, 딕셔너리 키(Key)를 통해 빠르게 데이터 접근

3. 자료구조 기본 특징

  • 배열(Array): 고정 크기, 인덱스를 통한 빠른 접근
  • 리스트(List): 동적 크기, 삽입/삭제 용이
  • 스택(Stack): 나중에 넣은 데이터가 먼저 나오는 LIFO 구조
  • 큐(Queue): 먼저 넣은 데이터가 먼저 나오는 FIFO 구조
  • 트리(Tree): 부모-자식 관계를 가지는 계층적 데이터 구조
  • 그래프(Graph): 노드와 엣지로 복잡한 관계를 표현
  • 해시테이블(Hash Table): 키를 통해 값을 빠르게 찾는 구조

4. 실생활 예시로 이해하기

자료구조 실생활 비유

스택 책 더미 쌓기 (맨 위 책부터 꺼냄)
은행 대기 줄 (먼저 온 사람이 먼저 처리됨)
배열 고정된 칸이 있는 서랍장
리스트 늘리거나 줄일 수 있는 줄지은 좌석
트리 회사 조직도
그래프 지하철 노선도

 

이번 글에서는 자료구조가 무엇인지, 왜 중요한지, 어떤 종류가 있는지를 간단히 정리했습니다.

자료구조는 단순한 암기가 아니라 '언제, 왜, 어떻게 쓰는가'를 이해하는 것이 핵심입니다.

 

728x90
반응형

+ Recent posts