이 포스트는 FastCampus에 이 강의를 보고 포스팅되었습니다.
문제가 될 시 삭제될 예정입니다.
전에 말했듯이 효율적인 자료구조를 찾아야 효율적인 알고리즘을 짤 수 있습니다.
자료구조는 크게 2가지 종류를 가지고 있습니다.
이번 시간에는 선형 자료구조에 대해 알아보죠.
선형 자료구조는 앞뒤에 요소가 1:1에 관계하고 있습니다.
앞에 있는 요소와 뒤에 있는 요소가 1:1에 관계를 맺고 선처럼 이어져 있죠.
배열은 사용할 메모리를 먼저 할당받고, 거기에 자료를 넣는 식입니다.
한 곳에 4 Byte 씩 할당됩니다.
배열에 특징은 중간이 비면 안 됩니다.
배열은 특정 위치에 있는 값을 꺼내는 연산이 빠릅니다.
배열과는 다르게 그때그때 메모리를 추가로 할당받는 자료구조입니다.
연결 리스트는 자료와 함께 다음 요소를 가리킬 링크를 하고 있습니다링크를 가지고 있습니다.
물리적 순서와 논리적 순서가 다를 수 있습니다.
연결리스트의 종류로는 단순, 더블, 서클이 있습니다.
데이터가 추가, 삭제하는데 들어가는 속도가 배열보다 더 빠르죠.
단, 특정한 곳을 찾아가는 것은 느립니다.
학교를 생각해봅시다!
배열 같은 경우 미리 책상 30개를 두고, 학생들이 들어오면 미리 가져온 책상을 사용한다고 생각하면 됩니다.
연결리스트 같은 경우 전학생이 올 때마다 책상을 가져온다고 생각하면 되죠
스택은 말 그대로 쌓는 자료구조입니다.
상자를 위로 쌓듯, 나서스 스택 작을 하듯 하는 그 자료구조이죠.
상자를 위로 쌓고, 위에서부터 꺼내듯 스택은 모든 연산이 전부 맨 위에서 이루어집니다.
사실, 이 예시는 우리가 흔히 프로그래밍할 때 볼 수 있습니다.
나중에 포스팅할 거지만 DFS는 깊이 우선 탐색 알고리즘 입니다.
이 자료구조는 선착순 개념과 같다고 보시면 됩니다.
나중에 들어온 사람이 먼저 나가는 스택과는 다르게, 먼저 들어온 사람이 먼저 나가는 방식이 큐지요.
그래서 우리는 스택을 LIFO 방식, 큐는 FIFO 방식이라고 부릅니다.
LIFO(Last In First Out) : 후입선출 즉, 나중에 들어온 사람이 먼저 나가는
FIFO(First In First Out) : 선입선출 죽, 먼저 들어온 사람이 먼저 나가는
큐는 맨 앞부분을 front, 자료가 추가되는 부분을 rear라고 부릅니다.
자료 추가 오퍼레이션을 enQueue, 자료 삭제 오퍼레이션을 deQueue라고 합니다.
스택과 큐는 배열 혹은 연결리스트로 구현할 수 있습니다.
나중에 구현해볼 겁니다. 일단 스택은 배열로, 큐는 연결리스트로 구현해보죠.
네. 선형 자료구조에 대해 알아보았습니다.
다음 시간에는 트리, 그래프 같은 비선형 자료구조에 대해 배워보도록 하죠!
수고하셨습니다.