공부/자료구조, 알고리즘

스터디 1주차 - Stack (자료구조)

BeepMaeae 2025. 5. 5. 14:44

사실 자료구조를 수강한지는 한 학기, 스터디를 시작한지는 2개월이 지났지만 여태까지 배운 것들에 대한 정리를 하나도 안 하고 있었기 때문에 ... 지금부터라도 내가 했던 걸 조금씩 기록하려고 한다.

 

아무튼 자료구조 시간에 배웠던 Stack을 사용하는 문제들을 실제로 풀어보기 위해 Stack에 대한 것을 다시 복습해봤다.

 

Stack이란 제한적으로 접근할 수 있는 나열 구조이며, Last In, First Out 방식을 사용하기 때문에 '가장 끝 원소'에 대해서만 접근할 수 있다.

Stack의 기본 구조. 출처: 나 자신

예를 들어 A라는 데이터가 있는 Stack이 존재했다고 가정해보자. B, C가 차례로 Stack에 들어온다면, 그 뒤 내가 직접적으로 접근할 수 있는 데이터(예를 들어 데이터를 삭제한다든가)는 C다. 나중에 들어온 데이터가 무조건 먼저 나가야 되는 Stack의 특성 때문이다.

 

Stack에서 사용되는 기본적인 ADT(추상 자료형)은

 

- push(a): a를 스택의 맨 위에 삽입한다.

- pop(): 스택의 맨 위에 있는 객체를 제거하고 반환한다.

- top(): 스택의 맨 위 객체를 제거하지 않고 반환한다.

- size(): 스택에 저장된 요소 개수를 정수로 반환한다.

- empty(): 스택이 비어 있는지 여부를 bool로 반환한다.

 

정도로 추릴 수 있겠다.

 

Stack이나 다음에 올릴 Queue 같은 경우에는 내용이야 워낙 간단하고 이걸 활용하는 문제가 어려우니, 문제 풀이 내용을 위주로 추가로 업로드할 예정이다.