LearningJavaScript

C.S. [Data Structure] Intro

jyshimmy 2020. 9. 3. 09:35

자료 구조(Data Structure)는 크게 네 가지 부분으로 나누어 볼 수 있다.

 

1. 스택과 큐

스택과 큐는 자료구조들 중 가장 간단해서 활용도가 높은만큼 중요도도 가장 높은 자료구조다.

 

2. 연결 리스트와 해시 테이블

배열처럼 데이터를 선형적으로 담을 수 있는 연결 리스트가 배열과는 어떻게 다른지 비교하며 공부할 수 있다. 해시 테이블은 자료구조들 중 가장 어렵고 성격도 다르지만, 해시 테이블만이 갖는 장점을 주의깊게 볼 필요가 있다.

 

3. 그래프, 트리, 이진 탐색 트리

위 세 개는 모두 그래프 형태를 갖지만, 결코 수학적인 부분에서만 사용되는 것은 아니다. 실생활 문제를 해결하는데 어떻게 적용이 가능한지 볼 수 있다.

 

4. 시간 복잡도(Time Complexity)

시간 복잡도는 알고리즘을 표현하는 도구다. 시간 복잡도에 대한 이해가 있어야 다양한 자료구조에서 일어나는 작업들의 시간적 효율을 측정? 판단 할 수 있다.

 

 

용어 정리

 

자료: "문자, 숫자, 소리, 그림, 영상, 단어 등의 형태로 된 의미 단위로, 자료를 의미있게 정리하면 정보가 된다."

 

컴퓨터의 언어: 0, 1로만 구성된다. 이렇게 0과 1로 이루어진 수를 이진수라고 부른다. 전기가 연결되면 1, 아니면 0이 된다고.

 

컴파일러(compiler): 프로그래밍 언어로, 프로그래밍 언어와 컴퓨터 (기계)언어 사이에 번역기라고 볼 수 있다. 

 

데이터 타입(Data Type): 여전히 컴퓨터에 0과 1로 저장되는 데이터를 인간이 사용하는 데이터의 종류로 해석하기 위한 장치로 데이터 타입을 지정했다. 같은 이진 데이터라도 인간이 하는 해석에 따라 다른 데이터가 될 수 있다. (방법: 특정한 길이로 나눈다. 비트 8개로 조합한 1byte단위로 읽는다. ASCII Table을 참고하면 알파벳으로 옮길 수 있다.)

  • 원시 타입(primitive type)
    • 정수, 실수
    • 문자
    • 논리 (참, 거짓)
  • 사용자 정의 타입(custom type)
    • 구조체, 클래스 등...

자료 구조 (Data Structure)

데이터 타입이 하나의 데이터를 어떻게 해석할지 정의한 것이라면, 자료 구조는 여러 데이터들의 묶음을 어떻게 저장하고 사용할지를 정의한 것

배열은 특정한 목적을 갖기 보다 범용적으로 사용되는, 여러 구조를 한 줄로 이어 붙인 구조로 저장하고 사용한다. 스택이나 트리와 같이 대부분의 자료 구조는 특정 상황에서 특정 문제를 해결하는데 특화 돼있다. 

따라서 많은 자료 구조를 알아야 상황에 적합한 자료구조를 사용해 문제를 해결 할 수 있다.

 

자료 구조 공부를 통해 10,000,000개의 데이터 중 원하는 데이터를 최대 25번 미만의 연산으로 찾아낼 수 있다.