
스택(Stack)이란 무엇일까?
스택(Stack)이란 위에 사진과 같이 겹겹이 위로 쌓여진 형태를 뜻한다. 차곡차곡 쌓아놓은 물건을 안전하게 사용하는 방법은 위에서부터 물건을 다시 꺼내야한다. Stack은 이러한 상황에 알맞게 활용할 수 있는 자료구조다.
즉, LIFO(Last In First Out) 혹은 FILO(First In Last Out)의 형태를 가지고 있는 자료구조입니다.
스택(Stack)의 특징
LIFO(Last In First Out)
stack은 push로 데이터를 집어 넣고, pop으로 데이터를 꺼냅니다.
Stack<Integer> stack = new Stack<>(); //Integer형 스택 선언한다고 가정합니다.
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
// 이때 1 <- 2 <- 3 <- 4 순서로 stack에 데이터가 담겨집니다.
// pop을 통해 4개의 데이터를 꺼내봅시다.
stack.pop();
stack.pop();
stack.pop();
stack.pop();
// 4, 3, 2, 1 순서로 가져올 수 있습니다.
// 즉, 마지막에 있는 데이터부터 차례대로 나오게 됩니다.
stack은 후입선출이라는 특징 외에도 한번에 하나의 데이터만을 넣을 수 있으며 하나의 입출력 방향을 가지고 있다는 특징이 있습니다.
왜 스택(Stack)을 사용할까?
후입선출(Last In First Out)구조이기 때문에 데이터 처리 속도가 빠릅니다.
삽입과 삭제가 항상 스택의 맨 위에서 이루어집니다. 따라서 스택에서 데이터를 삽입하거나 삭제할 때, 다른 데이터의 위치를 변경할 필요가 없습니다. 즉, 어떠한 데이터의 위치를 이동할 필요가 없으며 이로인해 추가적인 처리 시간이 발생하지 않습니다.
또한 자바에서 스택을 기본적인 자료구조로 제공하기 때문에 별도의 라이브러리나 모듈을 설치할 필요가 없어 편리한 자료구조입니다.
다만, 크기 제한이 없기 때문에 불필요한 메모리 사용량이 증가할 가능성이 있으며 Vector 클래스를 상속받아 구현되어 있기 때문에 크기를 동적으로 조정하지 않는다는 단점을 가지고 있습니다.
'CS > Data Structure' 카테고리의 다른 글
[ 자료구조 ] 큐(Queue)란 무엇일까? (0) | 2023.07.17 |
---|---|
[ 자료구조 ] 맵(Map)이란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 셋(Set)이란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 이터레이터(Iterator)란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 리스트 (List)란 무엇일까? (0) | 2022.09.13 |

스택(Stack)이란 무엇일까?
스택(Stack)이란 위에 사진과 같이 겹겹이 위로 쌓여진 형태를 뜻한다. 차곡차곡 쌓아놓은 물건을 안전하게 사용하는 방법은 위에서부터 물건을 다시 꺼내야한다. Stack은 이러한 상황에 알맞게 활용할 수 있는 자료구조다.
즉, LIFO(Last In First Out) 혹은 FILO(First In Last Out)의 형태를 가지고 있는 자료구조입니다.
스택(Stack)의 특징
LIFO(Last In First Out)
stack은 push로 데이터를 집어 넣고, pop으로 데이터를 꺼냅니다.
Stack<Integer> stack = new Stack<>(); //Integer형 스택 선언한다고 가정합니다.
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
// 이때 1 <- 2 <- 3 <- 4 순서로 stack에 데이터가 담겨집니다.
// pop을 통해 4개의 데이터를 꺼내봅시다.
stack.pop();
stack.pop();
stack.pop();
stack.pop();
// 4, 3, 2, 1 순서로 가져올 수 있습니다.
// 즉, 마지막에 있는 데이터부터 차례대로 나오게 됩니다.
stack은 후입선출이라는 특징 외에도 한번에 하나의 데이터만을 넣을 수 있으며 하나의 입출력 방향을 가지고 있다는 특징이 있습니다.
왜 스택(Stack)을 사용할까?
후입선출(Last In First Out)구조이기 때문에 데이터 처리 속도가 빠릅니다.
삽입과 삭제가 항상 스택의 맨 위에서 이루어집니다. 따라서 스택에서 데이터를 삽입하거나 삭제할 때, 다른 데이터의 위치를 변경할 필요가 없습니다. 즉, 어떠한 데이터의 위치를 이동할 필요가 없으며 이로인해 추가적인 처리 시간이 발생하지 않습니다.
또한 자바에서 스택을 기본적인 자료구조로 제공하기 때문에 별도의 라이브러리나 모듈을 설치할 필요가 없어 편리한 자료구조입니다.
다만, 크기 제한이 없기 때문에 불필요한 메모리 사용량이 증가할 가능성이 있으며 Vector 클래스를 상속받아 구현되어 있기 때문에 크기를 동적으로 조정하지 않는다는 단점을 가지고 있습니다.
'CS > Data Structure' 카테고리의 다른 글
[ 자료구조 ] 큐(Queue)란 무엇일까? (0) | 2023.07.17 |
---|---|
[ 자료구조 ] 맵(Map)이란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 셋(Set)이란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 이터레이터(Iterator)란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 리스트 (List)란 무엇일까? (0) | 2022.09.13 |