본문 바로가기
theory 📓/자료구조 알고리즘

[자료구조/알고리즘] 자료구조에 대해

by 고돌한 데이터 사이언스 2023. 8. 21.
반응형

개요


자료구조의 학습의 목적

- 데이터를 체계적으로 저장하고, 효율적으로 활용하기 위해

 

경험에 따르면 특정한 패턴이 있는 상황들이 빈번하게 발생하게 된다.

이러한 특정 패턴의 문제를 해결하는데 있어, 보다 빠르고 정확하게 해결하기 위해 학습을 한다.

 

또한 우리에게 주어진 자원(메모리, cpu) 등은 한정적이다.

이러한 제약적인 상황에서 메모리 공간을 효율적으로 사용하고,

실행 시간의 효율성을 고려하여 최대한의 아웃풋을 끌어내기 위해 필요하다.

 

모든 패턴에서 맞는 자료구조는 없다

따라서 각 자료구조가 갖는 장점과 한계를 알고 학습하는 것이 중요하다.

 

 

자료구조란?


간단하게 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의

 

데이터 값의 모임 이다.

 

좀 더 상세 하게 들어가보면

 

먼저 데이터를 정의해보자

 

데이터는 문자, 숫자, 소리, 그림, 영상 등 정형, 비정형으로 이루어진 실생활을 구성하고 있는 모든 값이다.

 

이러한 데이터를 사용하려는 목적에 따라 형태를 구분하고, 분류하여 사용한다.

 

이러한 데이터, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며, 자료에 대한 처리를 효율적으로 수행할 수 있도록 

자료를 구분하여 표현한 것이다.

 

예시로 많이 드는 책장 사례를 들어보자

 

맨 왼쪽과 같이 한정된 크기를 가진 책장이 있고, 

이 책장을 활용하여 책들을 정리해 보자

해당 빈책장이 놓아져 있을 때, 가장 빠르고 많은 책을 넣기 위한 방안으로

아무런 규칙없이 책을 우겨 모두 꽂아 넣는 방안이 있을것이다.

 

하지만 이렇게 아무런 규칙 없이 책을 꽂아 넣으면,

특정한 책을 찾을 때 모든 범위를 뒤져 찾아야한다.

 

이렇게 되면 많은 비용이 발생하게 된다.

 

두 번째, 세 번째 책장 처럼 규칙을 정해 원소(책)들을 나열하면

모든 범위를 뒤지지 않고, 특정 책을 손쉽게 적은 비용으로 찾을 수 있다.

 

정리하면,

책장은 메모리이고, 책은 데이터이다.

 

연산에 사용되는 메모리 자원은 한정적이고, 처리해야할 데이터의 양은 무수히 많다.

위 사례 처럼 메모리 공간을 효율적으로 사용해야 하는데 필요한 것이 

곧 자료구조이다.

 

자료구조와 알고리즘의 관계


알고리즘은 문제를 해결하기 위한 처리과정의 순서이다.

 

알고리즘을 비유하면 레시피라 생각하면 쉽다.

해당 레시피를 따라하면 누구나 같은 결과를 낼 수 있어야 한다.

 

보통 자료구조가 먼저 선택이 되면 이에 적용할 알고리즘은 명확해진다.

 

즉, 자료구조가 효율적인 알고리즘을 사용할 수 있게 해주기 때문에

자료 구조와 알고리즘은 매우 밀접한 관게를 가지고 있다.

 

위 책장 예시를 다시 생각해서 적용해보면

 

특정 책을 찾아야 할 때, 두 번째, 세 번째 처럼 진열되어 있는 구조에 따라 효율적으로 책을 찾는 방법이 다르다.

 

제목 순서대로 진열되어 있으면, 해당 책 제목에 따라 정방향, 역방향 방향으로 선택하여 찾는 방법을 선택하게 될 것이며,

 

해당 책이 it 서적이라면, it 분야부터 탐색하는 방법를 선택하게 된다.

 

자료구조의 선택 --> 효율적인 알고리즘 선택 순으로 진행되게 된다.

 

자료구조의 종류와 구분


 

자주 등장하는 네 가지의 자료구조로는 아래와 같다.

 

stack, queue, tree, graph

 

앞으로 순차적으로 자료구조에 대해 정리할 게획이다.

반응형

댓글