ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료구조] #자료구조란(Data Structure)?
    알고리즘/자료구조 2022. 9. 5. 11:13
    728x90
    반응형

    오늘은 자료구조에 대해서 다뤄볼 예정이다.우리는 학교를 다니면서 특정 전문지식을 배우는 과로 진학을 한다고 해서 기본 교양과목 국어, 역사, 과학 등을 안배우지는 않는다. 그것들이 필수과목으로 지정이 되고 어디서 무얼하든 무조건적으로 배우는 과목인 이유가 분명 존재할 것이다. 그래서 프로그래밍을 하더라도 알고리즘이나 자료구조등의 베이스 지식이 있다면 더 좋은 프로그래머가 될 수 있을 것이다.

     

    일단 제목대로 오늘의 내용은 자료구조이다

     

    자료구조란?
    컴퓨터과학에서 효율적 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미

    자료구조의 정의는 위와 같다. 우리는 이미 자료구조를 평소에 살면서 느끼고 있다. 조직도를 생각을 해보자. 사장, 그밑에 임원진, 그 밑에 팀장, 부장 등 하나의 뿌리로 부터 가지로 뻗어나가서 그 조직도를 구성하는 방법 그것이 조직도의 자료구조인 것이다.

    한가지 좋은 예시를 들어보겠다. 

    우리가 지식이나 정보를 저장하기 위한 종이 문서가 있다. 그 종이 문서들을 단원별로 정리하여 묶어놓은 구조가 바로 책이다. 그 책들이 모여서 책장이 되고 책장이 여러 모여 도서관이라는 시설을 만들고, 그것이 현대에 다다라선 네트워크가 되었다. 점점더 넓은 범주를 포함하는 관계가 되는 것이다. 우리가 그런 정보와 지식을 아무렇게나 저장을 하면 그것을 찾는것에 엄청난 시간을 쏟게 될것이다. 따라서 자료구조는 큰 데이터들을 효율적으로 관리함에 존재하고 그러기에 체계적으로 정리하고 분류하여 사용자 입장에서 접근하기 쉽도록 정리를 해놓는 것에 목적을 두고 있는 것이다.

     

    자료구조의 특징

     

    자료구조는 적절한 상황에 적잘한 자료구조를 사용할 수 있다. 위에서 말한 것처럼 큰 규모의 데이터들을 관리할 때 이것이 두드러지게 된다

    1) 효율성 : 사람마다 특정일을 하는 방법은 다 재각각이겠지만 모두가 같은 방법을 고수하지는 않는다. 예를 들어 알고리즘에 경우 우리가 어떤 배열에서 값을 찾을 경우 선형 검색과 이진 검색 중 선택하여 사용할 때 처럼 특정 상황에 맞는 효율적인 방법을 선택하여 데이터를 정리할 수 있을것이다. 

    2) 추상화 : 계속 예를 드는 이유는 프로그램적으로 접근했을 때와 우리의 생각과 잘 매치가 되지 않는 경우가 많다. 당연히 우리가 직접 데이터들의 구조와 상태를 눈으로 보기 힘들기 때문에 그 데이터들을 우리가 생각하기 쉽도록 추상화 시키는것이 중요하다. 큐와 스택같은 구조에 대해서 설명할 때 그림을 그려서 배우고 예시를 드는 것도 이 특징과 관련이 있다고 얘기할 수 있다.

    3) 재사용성 : 우리가 특정 자료구조를 작성했을 때 그 방법이 한 프로그램에만 사용된다면 다른 프로젝트를 생성했을 때 적용시킬수가 없을 것이다. 고로 여러 프로그램에 적용 시에 문제가 없도록 설계하는 것이 중요하다고 할 수 있다.

     

    자료구조의 분류

     

    나중에 한 개념씩 포스팅을 할 계획이지만 대략적으로 두가지로 분류가 된다.

     

    구현

    • 배열(Ararry)
    • 튜플(Tuple)
    • 연결리스트(Linked List)
    • 해시 테이블(Hash Table)

     

    형태

    • 선형 구조(큐,덱,스택)
    • 비성형 구조(그래프,트리)

     

    알고리즘과 자료구조의 차이

     

    프로그램에 있어서 이 두개념은 절대적으로 필요하다 솔직히 이 두가지로 이루어져 있다고 봐도 무방할 정도로 주용한 개념들이다. 하지만 두개가 프로그램 이론인 만큼 확실하게 차이를 두지 않으면 헷갈릴 수가 있다.

     

    알고리즘 : 어떠한 문제를 해결하기 위해 정해진 일련의 절차
    자료구조 : 자료를 효율적으로 관리할 수 있는 방법

    -> 알고리즘은 문제를 해결하는 것이고, 자료구조는 정보와 지식을 정리하는 것이다.

    이 두가지 키워드로 정리를 해보았다. 

    '알고리즘 > 자료구조' 카테고리의 다른 글

    [자료구조] #스택(Stack)  (0) 2022.09.30
Designed by Tistory.