자료구조가 무엇인지 설명할 수 있다.
자료구조란 여러 데이터들의 묶음을 어떻게 저장할 것이고, 사용할 것인지 정의한 것
자료들이 잘 분석이 되고, 정리되고 활용되어야만 의미가 있다
대부분의 자료구조는 특정한 상황에 문제를 해결하는 데에 특화
Stack, Queue, Tree, Graph 자료구조에 대해 이해할 수 있다.
Stack :
자료(data)를 쌓는 자료구조
LIFO(Last In First Out) 혹은 FILO(First In Last Out)
ex) 브라우저에서 뒤로 가기, 앞으로 가기 기능을 구현할 때
push() and pop()
Queue :
줄을 서서 기다리다, 대기 행렬 이라는 뜻
밀려드는 데이터 보관장소
FIFO(First In First Out) 혹은 LILO(Last In Last Out)
ex)각 장치간의 속도의 차이나 시간 차이를 극복하기 위한 임시 기억 장치로 Queue가 사용
Buffer
Enqueue and Dequeue
알고리즘 문제에서 Stack, Queue 자료구조를 배열로 대체하여 흉내낼 수 있다.
각 자료구조의 개념과 구조를 파악하고 목적을 이해할 수 있다.
알고리즘 문제의 각 상황에 맞는 자료구조를 떠올릴 수 있다.
트리 및 그래프의 탐색 기법에 대해 이해할 수 있다.
그래프 :
여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조.
정점(vertex)
간선(edge)
그래프의 표현방식
-인접 행렬(Adjacency Matrix) : 이차원 배열을 사용방식
- 인접 리스트(Adjacency List) : 리스트를 사용하는 방식
ex) 포털사이트의 검색엔진, SNS, 네비게이션 길찾기
Binary Search Tree를 이해할 수 있다.
BFS와 DFS의 개념을 이해하고 알고리즘 문제에서 사용할 수 있다.
자료구조를 활용하여 알고리즘 문제에 접근할 수 있다.**
Array.prototype에는 Stack, Queue 사용을 위해 어떤 메서드가 존재하나요?
배열로 Stack, Queue를 사용할 때 주의해야 할 사항은 어떤것들이 있나요?
배열로 Stack을 사용할 때 push, pop 이외에 필요한 메서드를 어떻게 구현할 수 있나요?
배열로 Queue를 사용할 때 push, shift 이외에 필요한 메서드를 어떻게 구현할 수 있나요?
javascript의 배열과 Stack, Queue는 어떤 차이가 있나요?