본문 바로가기

알고리즘 & 문제풀이

자료구조

이미 자료구조 관련 Stack 글이 포스팅 되었지만… 자료구조가 무엇인지 간략하게 소개하고자 해당 글을 씁니다 !..!

자료구조란?

자료구조 ( Data Structure )는 데이터를 저장하고 관리하는 방식 입니다. 많이 들어 본 배열, 리스트, 스택 … 들이 자료구조에 해당됩니다. 또한 배열을 정렬하는 방식에서 선택정렬, 삽입정렬, 버블정렬 등 여러가지 방법이 존재하는데, 이러한 정렬이라는 문제를 해결하는 방식들을 알고리즘이라 합니다.

자료구조의 필요성

현대에는 물리적인 메모리 크기가 늘어났으며, 이미 검증 된 메모리 활용 방식을 사용하여 안정화가 되었으나, 그렇지 못 한 과거에는 한정 된 메모리 안에서 최대한 성능을 끌어내기 위한 방법이 이슈였을거라 생각합니다. 자료 구조도 그 중 하나의 영역 일 것입니다.

그렇기에 과거보단 풍요로운 자원에서 개발하기 때문에 자료구조의 중요성을 잊기 쉬우나, 상황에 따른 적절한 자료구조 사용프로그램의 성능 및 효율성을 높일 수 있습니다.

자료구조 예시

개발자 킴쿡은 더 좋은 개발자가 되기 위해 새로운 용어를 접할 때 마다, 용어를 정리하는 노트를 샀습니다.

어떤 방법으로 용어사전 ( 자료구조 )을 만들 수 있을까요?

첫 번째 방식으로, 정리하는 순서대로, 첫 페이지 첫 줄 부터 하나씩 적어나가기 시작했습니다. 한 1000개 정도 정리 했을 때, 알고리즘 용어를 정리했었는데! 기억이 나지 않아 노트를 꺼내 첫페이지 부터, 확인하기 시작합니다… 글씨도 잘 못 쓰고, 찾는데 비효율적이라 생각한 킴쿡은 다음 방식으로 정리합니다.

탐색의 비효율

두 번째 방식으로, ㄱㄴㄷ 순으로 차례대로 용어를 정리하기 시작했습니다. 한 100개 정도는 운 좋게 모르는 용어들이 딱 ㄱㄴㄷ 순이였지만, 그래프라는 단어를 정리하기 위해… 공간이 필요했고 그래프 뒤에 있는 위치 할 단어들을 다 지우고, 그래프를 정리하고 지운 단어들을 다시 정리해야 했습니다.

∙ 삽입 삭제의 비효율

세 번째 방식으로, ㄱ,ㄴ,ㄷ,ㄹ … 에 맞게 하나씩 노트를 한권씩 사서 정리하는거 였습니다… 찾기도 쉽고, 정리하기도 쉬웠으나, ㅋ으로 시작하는 용어를 정리한 적이 없어 아직 ㅋ에 해당하는 노트는 빈 노트입니다..

∙ 메모리 비효율

위 예시와 같이 완벽한 자료구조는 없다 생각합니다. 그러나 상황에 맞는 보다 효율적인 자료구조는 존재 할 것입니다.

정리

자료구조는 데이터 저장 및 관리하는 구조로 목적성에 따라 효율성 및 성능을 높일 수 있다.

오늘도 고생 많으셨습니다 :0

피드백 과 문의 요청은 언제나 환영입니다!!


참고자료

https://www.youtube.com/watch?v=ZjxeOCe7uF8

https://www.youtube.com/watch?v=bh23BDYOry8

https://hanamon.kr/자료구조란-자료구조를-배우는-이유/