스택(Stack)은 LIFO(Last-In First-Out)으로 후입선출 구조를 가진다.
push() 로 데이터를 삽입하고, pop()으로 데이터 최상위 값을 삭제한다.
큐(Queue)는 FIFO(First-In First-Out)으로 선입선출 구조를 가진다.

ArrayList의 가장 큰 특징은 순차적으로 데이터를 저장한다는 점이다.
⇒ 따라서 ArrayList는 정보가 자주 삭제되거나 추가되는 데이터에는 적절치 않다 !
좋은 예로 주식 차트가 있다.
주식 차트에 대한 데이터는 요소가 중간에 새롭게 추가/삭제되는 정보가 아니며, 날짜별로 주식 가격이 차례대로 저장되어야 하는 데이터이다.
즉, 순서가 굉장히 중요한 데이터이므로 → Array와 같이 순서를 보장해주는 자료구조를 사용하는 것이 좋다.
만약 순서가 없는 자료구조를 사용할 경우, 날짜별 주식 가격을 확인하기 어려우며, 매번 전체 자료를 읽어 들이고 비교해야 하는 번거로움이 발생한다.
- Array는 크기가 고정적이고, ArrayList는 가변적이다.
- Array는 초기화 시 메모리에 할당되어 ArrayList보다 속도가 빠르고, ArrayList는 데이터 추사/삭제 시 메모리를 재할당하기 때문에 속도가 Array보다 느리다.
Array는 연속된 메모리 공간에 존재하고, LinkedList는 메모리 상에서 떨어져 있는 데이터들이 앞/뒤 데이터를 기억하는 형태로 존재한다.
Array는 index로 해당 원소에 접근할 수 있어 찾고자 하는 원소의 인덱스 값을 알고 있으면 O(1)에 해당 원소로 접근할 수 있다.
O(n)이 된다.이 문제를 해결하기 위해 LinkedList가 등장했다.
O(1)로 해결할 있다.✅ 정리하면,
- Array는 검색이 빠르지만, 삽입/삭제가 느리다.
- LinkedList는 삽입/삭제는 빠르지만, 검색이 느리다.
BFS(Breadth-First Search) 와 DFS(Depth-First Search) 는 그래프 탐색 알고리즘이다.
→ 이 알고리즘들은 그래프의 노드를 탐색하고 연결된 다른 노드들을 방문하는 방식에 차이가 있다.
BFS는 너비 우선 탐색 알고리즘이다.
큐(Queue)를 사용하여 구현된다.DFS는 깊이 우선 탐색 알고리즘이다.
스택(Stack) 또는 재귀 함수를 사용하여 구현된다.