ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 자료구조 - 자료구조란?
    CS지식/자료구조 2023. 12. 22. 15:36

    자료구조란?

    1. 자료구조는 데이터를 저장, 조직, 관리하는 방법

    자료구조는 자료(데이터)에 효율적으로 접근하고 수정할 수 있도록 저장 · 조직 · 관리하는 방법에 관한 이론이다.

     

    2. 자료구조는 문제 해결에 사용할 부품

    문제 해결 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것을 알고리즘이라고 하는데 자료구조는 이 과정에서 부품 같은 역할을 한다. 건축물을 만들려면 건축 재료와 구조물에 대한 이해가 필요하다. 재료에 대해 잘 알고 있어야 필요한 곳에 알맞은 재로를 사용하고 조합할 수 있다. 자료구조를 잘 몰라도 프로그램을 작성할 수 있지만 이는 재료의 속성이나 구조물을 구성 방법을 모르고 건축물을 만드는 것과 같다.

     

    알고리즘, 자료구조, 프로그래밍, 이산 수학의 관계

     

    자료구조는 프로그램으로 구현되고 사용되므로 자료구조를 학습하려면 프로그래밍 능력이 기본으로 필요하다.  자료구조를 구현 · 사용 · 결합하는 과정에서 수학적 사고도 크게 도움된다. 사고가 체계적일수록 자료구조를 사용한 결과물은 간명하고 관리하기 쉬워진다. 자료구조와 밀접한 관련이 있는 수학은 수열, 수학적 귀납법 등을 포함하는 이산 수학이다. [그림 1-5]는  알고리즘, 자료구조, 프로그래밍, 이산 수학의 관계를 나타낸다. 

     

    자료구조는 운영체제, 컴퓨터 네트워크, 인공지능, 시스템 프로그래밍, 컴파일러 등 컴퓨터 과학의 거으 모든 주제를 구현하기 위한 사고의 빌딩 블록을 제공한다.

     

    3.자료구조는 생각하는 방법을 훈련하는 도구

    자료구조는 그 자체를 공부하는 것도 중요하지만 자료구조를 다루는 과정에 포함된 '생각하는 방법'도 매우 중요하다. 자료구조를 구현하는 과정, 자료구조들을 이요해서 문제를 해결하는 과정, 문제를 해결하는 과정에서 논리의 골격이 구성되는 방법 또는 스타일 등이 이에 해당한다. 생각하는 방법을 고민하지 않는다면 자료구조는 공부는 단순하고 지적 자극이 없는 건축 재료에 대한 익히기가 될 뿐이다. 자료구조에서 시작된느 이 생각하는 방법은 자연스럽게 알고리즘으로 연결된다.

     

    문제 해결을 위한 생각의 과정에서 의미 단위를 잡는 일은 매우 중요하다. '의미의 매듭을 만든다'고도 표현할 수 있다. 큰 프로젝트를 여러 모듈로 분해하면 각 모듈이 의미의 매듭이 된다. 또 각 모듈은 더 작은 모듈로 나뉠 수 있다. 즉, 의미의 매듭은 여러 크기로 산재할 수 있다. 프로그래밍에서 어떤 작업을 함수로 만드는 것도 모듈화의 일종이다. 함수로 분리하면 강한 의미 단위가 된다는 뜻이다. 

     

    그림 1-6 재귀적 구조의 시에르핀스키 삼각형

    의미의 매듭을 만드는 과정에서 여러가지 생각의 구조가 개입될 수 잇는데 가장 중요한 구조중 하나가 재귀이다. 재귀는 어떤 문제가 자신과 성격이 똑같지만 더 작은 문제를 포함하고 있는 구조를 말하는데, 컴퓨터 과학 전반에 걸쳐 가장 중요한 사고 체계 중 하나다. 재귀는 큰 의미 매듭이 같은 모양의 더작은 의미 매듭을 1개 이상 포함하고 있는 것이라 할 수 있다. 

    [그림 1-6]은 재귀적 구조의 시에르핀스키 삼각형 예로, 같은 구조가 계층적으로 반복되는 것을 볼수 있다.

     

    4. 자료구조 종류와 자바의 컬렉션 패키지

    자바의 경우 클래스 종류별 패키지로 분류되어 있는데 그중 자료구조 관련 클래스를 모아둔 패키지가 컬렉션 패키지다. 이 패키지에서 다양한 자료구조를 손쉽게 가져다 쓸수 있어서 같은 시간 동안 옛날보다 훨씬 큰 작업을 수행할 수 있다. 하지만 자동차 바퀴를 끼우듯 한 번에 척 들어맞게 가져다가 쓸 수 있는 것은 아니다.이렇게 미리 만들어둔 것은 범용으로 사용할 수 있도록 지나치게 많은 기능을 제공하거나, 핵심에 집중하기 위해 최소한의 기능만 넣어놓은 경우도 있다. 따라서 효율적인 코딩을 위해서 직접 만드는 것이 더 바람 직한 경우도 있다. 자료구조를 직접 만들거나 만들어진 것을 목적에 맞게 잘 활용하려면 자료구조 내부의 작동 원리를 이애하고 있어야한다.

     

    5. 대표적인 자료구조

    그림 1-9 대표적인 자료구조

     

    대표적인 자료구조는, 리스트, 스택, 큐, 검색 트리, 힙 , 해시 테이블, 그래프 표현 등이다. 이 중 리스트, 스택, 큐는 데이터가 한줄로 배치된 선형 자료구조라고 한다. 검색 트리, 해시 테이블 등은 데이터를 효율적으로 찾기 위한 구조, 즉 색인을 위한 자료구조다. 우선순위를 다루는 데 유용한 구조이며, 그래프는 개체나 대상들의 관계를 표현하는 대표적인 수단이다. 

     

     

    [출처 - 쉽게 배우는 자료구조 with 자바,  저 문병로]
    https://www.hanbit.co.kr/store/books/look.php?p_code=B7033044159

     

    IT CookBook, 쉽게 배우는 자료구조 with 자바

    자료구조라는 도구를 사용하는 방법에 대한 기본기를 탄탄히 다질 수 있을 뿐만 아니라 효율적이고 최적화된 코드를 통해 실력도 기를 수 있습니다

    www.hanbit.co.kr

     

    댓글

Designed by Tistory.