안녕하세요! 지난 포스트에 Stack 자료 구조에 대해 잠깐 설명을 드렸습니다. 이어서 Stack에 대한 추가적인 내용들을 소개하고 정리해보는 시간을 가지겠습니다!

정의

Stack은 한 쪽 끝이 막혀 먼저 들어간 원소가 가장 나중에 나오는 형태의 자료구조를 말합니다. 즉, 나중에 들어간 원소가 가장 먼저 나오는 후입선출, LIFO(Last In Fast Out) 구조를 가집니다.

예를 들어, 왼쪽이 벽으로 막힌 주차장에 자동차가 들어갑니다. 먼저 주차한 자동차는 나중에 주차를 한 자동차가 나가기 전까지는 주차장을 빠져나올 수 없습니다. 즉, 아래와 같이 A, B, C 자동차가 A -> B -> C 순서로 들어간다면, 나오는 순서는 그 반대인 C -> B -> A가 되는 것입니다.

사진 1

특징

Stack을 사용하는 가장 큰 이유는 빠른 데이터 저장과 읽기 속도입니다. 프로그래머스 문제나 공모전 등 코딩을 할 때 List를 이용하는 경우가 많은데, 저장해야 하는 데이터 양이 많아지게 되면, 일반적인 List를 사용할 경우 상당한 양의 시간을 소모하게 됩니다. 이럴 경우 Stack을 이용하면 단 몇 초 만으로도 손쉽게 문제를 해결하는 경우가 많습니다! 또한, 구조가 단순하기 때문에 쉽게 만들 수 있다는 점도 하나의 장점입니다.

함수

Stack에서 주로 사용되는 함수는 총 4개입니다. 특히, Stack에 원소를 추가하는 push()와 Stack에 가장 나중에 추가된 원소를 삭제하고 그 원소를 반환하는 pop()은 꼭 필요한 함수입니다.

  • push() : Stack에 원소를 추가한다.

  • pop() : Stack에 가장 나중에 추가한 원소를 제거하고, 그 원소를 반환한다.

  • peek() : Stack에 가장 나중에 추가한 원소를 반환한다.(단, 제거하지 않는다.)

  • empty() : Stack에 어떤 원소도 없다면 True, 있다면 False를 반환한다.

코드 구현

Class를 이용하여 Stack을 구현해봤습니다. empty(), pop() 등의 함수를 만들기 위해 추가적으로 size()를 구현했습니다. Class 정의 이후, 실제로 잘 작동하는지 예시를 만들어 봤습니다.


Reference

  1. 파이썬 for Beginner     [우재남 지음]
  2. yeseolee.log
  3. live-jh


DATA_100%_LOGO_LIGHT



댓글남기기