티스토리 뷰
우리 주변을 살펴보면 많은 부분에 있어 규칙이 정해져 있고, 조직화되어 있는 것을 볼 수 있습니다.
이렇게 하는 이유는, 효율적이기 때문인데요. 예를 들면 해야할 일을 리스트로 정리한다던가, 매표소에서 줄을 서서 구매하는 것 등등 여러 가지가 있습니다. (만약 매표소에서 줄을 서지 않고 표를 구매할 수 있다면, 엉망진창이 되겠죠?)
일상에서 볼수 있는 예와 자료구조를 비교해보면 아래와 같이 나타 낼 수 있습니다.
우리가 만들게 되는 프로그램은 적절한 자료구조와 알고리즘으로 이뤄집니다. 그래서 많은 회사들이 자료구조와 알고리즘을 중요하게 생각하는 것이죠!
만약 최대값을 찾는 프로그램을 작성한다고 가정해봅시다. 최댓값을 찾는 프로그램의 경우 다양한 방법이 있겠지만, 배열이라는 자료구조와 순차탐색이라는 알고리즘을 사용하여 구현을 할 수 있습니다.
자료구조에 대한 개념을 좀 더 자세히 살펴보면, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미합니다. 어떤 자료구조를 선택하느냐에 따라 프로그램의 실행 시간과 메모리용량과 같은 컴퓨터 자원 사용에 영향을 끼치게 됩니다. (그러므로 자료구조와 알고리즘은 뗄레야 뗄 수 없는 관계!)
자료구조와 알고리즘은 뗄레야 뗄 수 없는 관계라 그랬죠?? 그렇기 때문에 알고리즘을 평가하는 기준이 되는 시간복잡도와 공간복잡도에 대한 개념을 알고 있으면 좋습니다. 만약 알고리즘 시간 복잡도와 공간 복잡도의 개념을 모르고 계신 분이라면, 이 글 을 읽고 오시는 것을 추천합니다!
그리고 시간적 여유가 있으신 분이라면, 추가로 나무위키에서 정리한 자료구조에 대한 내용도 읽어보면 좋을 것 같습니다 :)
자료구조는 구조에 따라 다음과 같이 나눌 수 있습니다.
여기서 우리가 주의깊게 공부할 내용은 선형 구조와 비선형 구조입니다.
선형 자료구조
- 데이터를 일렬로 저장하는 방식 ex) 리스트, 스택, 큐, 덱..
비선형 자료구조
- 데이터를 나란히 저장하지 않는 구조 ex) 트리, 그래프
여기까지 자료구조에 대한 개념과 필요성에 대해 알아봤습니다.
앞으로는 배열, 스택, 큐, 리스트.. 트리... 그리고 그래프까지 차근차근 포스팅해보겠습니다.
읽어주셔서 감사합니다 :)
참고)
medium.com/@ghilbut/프로그래밍을-잘하는-5가지-방법-1-자료구조와-알고리즘-공부하기-ebf3a3f79ee2
'자료구조' 카테고리의 다른 글
[자료구조] 리스트 (연결 리스트 부터 이중 연결 리스트까지) (0) | 2020.12.02 |
---|---|
[자료구조] 큐(QUEUE)를 알아보자! (1) | 2020.09.19 |
[자료구조] 스택(stack) 이란? (0) | 2020.07.25 |
[자료구조] 배열, 구조체 그리고 포인터 (0) | 2020.07.23 |
[자료구조] 순환(Recursion) with C (0) | 2020.07.23 |