반응형

WHY?

프로그래밍과 관련된 이론을 공부하거나 코딩테스트를 준비하는 사람이라면 자연스럽게 자료구조를 알게 된다. 자료구조를 찾아보면 알게 모르게 사용했던 배열과 리스트가 있고 처음 들어본 자료구조도 있을 것이다.

그냥 단순히 코드만 작성하면 되지 자료구조를 왜 공부해서 코드에 적용시켜야 할까?


자료구조란?

자료구조(data structure)란 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것이다. 또한 메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다.


자료구조의 특징

효율성

자료구조를 사용하는 목적은 데이터를 목적에 맞게 효율적으로 관리 및 사용하는 것이다. 따라서 상황에 맞는 적절한 자료구조를 사용하면 코드의 효율이 높아진다.

추상화

추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념만 간추려 내는 것을 말한다.

자료구조를 이용해서 데이터를 처리할 때에는 어느 시점에 데이터를 삽입할 것인지, 어느 시점에 데이터를 추출하고 사용할 것인지에 초점을 둔다. 즉, 데이터를 어떻게 삽입, 추출, 사용하는지를 구현하는 알고리즘에 중점을 두지 않는다.

재사용성

자료구조를 설계할 때, 특정 프로그램에서만 동작하게 설계하지 않는다. 다양한 프로그램에서 사용할 수 있도록 설계하기 때문에 다른 프로그램에서도 사용할 수 있다.


자료구조의 종류

자료구조는 크게 선형 구조비선형 구조로 나눌 수 있다. 선형 구조는 데이터가 일렬로 나열되어 있는 것을 뜻하고, 비선형 구조는 특정한 형태를 띠는 구조를 말한다.

선형 구조

배열(Array) : 가장 일반적인 구조이다. 메모리 상에 같은 타입의 자료가 연속적으로 저장된다.

연결리스트(Linked List) : 각 노드가 데이터와 포인터(주소)를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장한다.

스택(Stack) : 먼저 저장된 데이터가 꺼내어 쓸 때는 제일 마지막에 나온다. 반대로 가장 최근에 저장된 데이터가 꺼내어 쓸 때는 제일 먼저 나온다. 즉, 후입선출의 특징을 가진다.

큐(Queue) : 스택과 반대로 먼저 저장된 데이터가 제일 먼저 나온다. 즉, 선입선출의 특징을 가진다.

덱(Deque) : 양쪽에서 데이터를 넣고 뺄 수 있다. 스택과 큐의 특성이 합쳐졌다고 생각하면 된다.

해시(Hash) : 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜서 저장한다.

비선형 구조

트리(Tree) : 부모 노드 밑에 여러 개의 자식 노드가 연결되고, 자식 노드가 다시 부모 노드가 되어 각각의 자식 노드가 연결되는 재귀적 형태를 가진다.

그래프(Graph) : 노드(N, node)와 그 노드를 연결하는 간선(E, edge)을 하나로 모아 놓는 형태로 구성된다.


자료구조를 배우는 이유

자료구조를 사용하면 데이터를 체계적으로 저장하고, 효율적으로 활용할 수 있다.

다양한 자료구조를 알아야 하는 이유는 각 자료구조는 특정한 상황에 놓인 문제를 해결하는데 특화되어 있다. 즉, 자료구조를 사용해서 데이터를 체계적이고 효율적으로 사용하기 위해서는 상황에 맞는 자료구조를 사용해야 하는 것이다.


참고

하나몬 : [자료구조] 자료구조란? (자료구조를 배우는 이유)

https://hanamon.kr/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%9E%80-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0/

 

윤이네 수선집 개발일기 : [자료구조] 기본 개념 및 종류

https://doubleflavor.github.io/2021/01/08/sj-DS-intro/#%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%9D%98-%EC%A2%85%EB%A5%98

 

programmers : 자료구조와 알고리즘, 왜 중요할까?

https://prgms.tistory.com/134

 

반응형
복사했습니다!