learning/Algorithm

자료구조에 대해 알아보자

Aranea 2024. 3. 24. 23:58

 

컴퓨터의 자료구조에 대해 알아보자

 

알고리즘과 자료구조는 깊은 관계성 갖고있습니다.

Program = 자료구조 + 알고리즘

자료구조를 활용하여 알고리즘은 문제를 해결하는 과정과 방법론을 제시하죠.

여기서 자료구조란, 자료를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것을 말합니다.

알고리즘을 수행하기 위해 데이터를 메모리에 구조화하는 역할입니다.

 

컴퓨터가 더욱 효율적으로 문제 분석하고 처리할 수 있게 하기 위해서

우리는 알맞은 형태로 정의해야 할 수 있어야하는데요.

그 “알맞은 형태”가 곧 자료구조랍니다 🙂

 


 

컴퓨터는 어떤 다양한 방법으로 조직화 되어있는지 살펴봅시다.

 

형태에 따른 자료 구조 분류

 

 

[1] 단순 구조 (Simple Structure)

복잡한 계층 및 구성 요소를 가지지 않는 구조를 가리킵니다. 

보통 한 가지 유형의 데이터만을 담고 있거나,

데이터 사이의 관계가 단순하고 직접적인 경우를 단순 구조라 칭해요. 

 

 

 


 

[2] 선형 구조(Linear Data Structure)

데이터 요소가 선형적으로 연결되어 있는 구조를 가리킵니다. 

데이터는 단순한 순서로 저장되며, 데이터에 접근하고자 할 때 선형적인 방식으로 접근 할 수 있어요.

자료를 구성하는 원소 사이의 관계가 1:1 로, 하나씩 순차적으로 나열시킨 형태를 띕니다. 

 

  • 배열(Array) ==순차적 리스트

고정된 크기를 가지며, 같은 타입의 데이터를 연속적으로 메모리에 저장하는 자료구조입니다.

인덱스로 접근할 수 있으며 메모리에 연속적으로 할당됩니다. 

 

  • 연결리스트 ( Linked List )

데이터 노드들이 포인터를 사용하여 선형적으로 연결되어있는 자료구조입니다. 

각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성됩니다. 
또한, 삽입과 삭제가 배열에 비해 유연하고 편리합니다. 

 

  • 스택 (Stack)

후입선출의 원칙에 따라 데이터를 저장하고 관리하는 자료구조

 

들어가 쌓이는 순서 : 1 → 2 → 3 → 4 → 5 → 6
처리되는 순서 : 6 → 5 → 4 → 3 → 2 → 1

 

우물이라고 생각합시다. 구멍이 한 쪽 밖에 없다는 건,

데이터 추가와 삭제가 한쪽에서만 이루어진다는 것이기 때문에 후입선출 방식이 나타날 수밖에 없는거죠!

LILO(Last In Last Out, 후입 선출) - 나중에 들어간 것이 먼저 나온다

팝(Pop)?  스택의 맨 위에 이쓴 요소를 제거하는 작업을 의미

푸시(Push)? 스택의 맨 위에 새로운 요소를 추가하는 작업을 의미 

 

  • 큐 (Queue)

선입선출의 원칙에 따라 데이터를 저장하고 관리하는 자료구조입니다. 

 

양쪽에 구멍이 뚫려있는 빨대라고 생각해볼까요. 한 쪽에선 데이터 삽입이, 다른 한쪽에선 삭제가 이루어집니다. 

FIFO(First In First Out, 선입선출) - 먼저 들어간 것이 먼저 나온다

디큐(Dequeue)? 큐의 맨 앞에 있는 요소를 제거하는 작업을 의미

인큐(Enqueue)? 큐의 맨 뒤에 새로운 요소에 추가하는 작업을 의미

 

  • 덱(Deque)

양쪽 끝에서 삽입과 삭제가 가능. 큐의 발전 형태

인큐(Enqueue)? 덱의 맨앞이나 맨 뒤에 새로운 요소를 추가하는 작업을 의미

디큐(Dequeue)? 덱의 맨앞이나 만뒤에 요소를 제거하는 작업을 의미

 

[3] 비선형 구조(NotLinear Data Structure)

데이터 요소가 선형적으로 연결되어 있지 않은 구조를 말합니다 

각 자료들의 관계가 1:N , N:N 로, 하나의 자료 뒤에 여러 개의 자료가 존재할 수 있는 구조를 말합니다. 

 

  • 트리 (Tree)

부모-자식 관계를 표현하는 계층적 자료구조로, 선으로 연결된 1:N 데이터 구조를 나타냅니다.

 

 

 

  • 그래프 (Graph)

노드와 노드를 연결하는 간선으로 구성된 구조로, 서로 다양한 형태의 연결 관계를 가질 수 있습니다.

N:N의 연결 관계에 따라 데이터의 형태를 표현할 수 있습니다

  간선? 노드와 노드의 연결선

 

 


 

[4] 파일 구조 (File Structure)

데이터를 디스크나 메모리에 영구적으로 저장하고 관리하는방법에 대한 구조로,

일반적으로 DB system, file system 등에 사용됩니다.

 


 

간단한 자료구조 정리 개념을 살펴보았습니다. 

여기까지 읽어주셔 감사하고, 

세세한 자료구조의 알고리즘 구현은 추후에 업로드 예정입니다 🙂

'learning > Algorithm' 카테고리의 다른 글

그리디 알고리즘_[Greedy Algorithm]  (0) 2024.05.05
Selection sort_[선택 정렬]  (0) 2024.03.17
알고리즘(Algorithm)에 대해 알아보자  (2) 2024.03.17