알고리즘, 자료구조 공부

[자료구조] 스택 Stack

콘요맘떼 2022. 2. 26. 18:20

스택 (Stack)

  스택은 LIFO(Last-In First-Out)를 따르는 자료구조이다. 즉, 가장 최근에 넣은 아이템이 가장 먼저 제거되며 입구와 출구가 한 쪽만 열려있다고 생각하면 된다.

 

스택의 연산

(1) push( ) : 스택에 새로운 아이템을 추가한다. (가장 윗부분)

(2) pop( ) : 스택의 가장 위에 있는 항목을 제거하고 반환한다.

(3) isEmpty( ) : 스택이 텅 비어있는지 여부를 알려준다.

(4) peek( ) 혹은 top( ) : 스택의 가장 위에 있는 항목을 보여준다.

 

스택의 성능

- 탐색 : 스택에서 탐색은 모든 아이템을 하나하나 훑어봐야 되기 때문에 O(n)시간이 필요하다.

- 삽입 : 마지막에 데이터를 하나 추가해주면 되기 때문에 상수 시간에 가능하다.

- 제거 : 마지막 데이터를 하나 삭제해주면 되기 때문에 상수 시간에 가능하다.

 

스택의 활용 사례

(1) 웹 브라우저의 방문 기록

(2) 실행 취소 (undo)

(3) 계산기

(4) 수식의 괄호 검사 (parenthesis check)  - 실제로 계산기와 함께 스택 구현을 연습하는 예제로 많이 활용한다.

(5) 재귀 알고리즘

(6) 메모리의 스택 영역, 자바스크립트의 콜 스택, 실행 컨텍스트 스택 등

'알고리즘, 자료구조 공부' 카테고리의 다른 글

[자료구조] 집합 (Set)  (0) 2022.02.27
[자료구조] 리스트 (List)  (0) 2022.02.27
[자료구조] 맵 (Map)  (0) 2022.02.27
[자료구조] 덱 Dequeue  (0) 2022.02.26
[자료구조] 큐 Queue  (0) 2022.02.26