가이드라인

접시처럼 쌓아 올리는 스택(Stack)

스택은 데이터를 테이블 위의 접시처럼 쌓아 올리는 자료구조입니다.

쌓아올린 접시를 꺼낼 때 가장 위에 있는 접시부터 차례로 꺼내는 것처럼, 스택에서는 마지막에 추가된 데이터가 가장 먼저 제거됩니다.

LIFO(Last In, First Out), "마지막에 들어온 것이 가장 먼저 나간다"라는 규칙을 따릅니다.


스택은 어떻게 활용되나요?

  • 웹 브라우저의 뒤로 가기: 브라우저는 방문한 페이지들을 스택에 저장합니다. 뒤로 가기 버튼을 누를 때마다 마지막에 방문한 페이지부터 차례로 이전 페이지로 돌아갑니다.

  • 텍스트 에디터의 실행 취소: 텍스트 에디터는 사용자가 입력한 텍스트를 스택에 저장해두고, 실행 취소 버튼을 누를 때마다 마지막에 입력한 텍스트부터 차례로 삭제합니다.


스택의 주요 연산

스택에서는 몇 가지 기본 연산을 사용합니다.

  • push: 스택의 맨 위에 새로운 데이터를 추가하는 연산입니다.

  • pop: 스택의 맨 위에 있는 데이터를 제거 및 반환하는 연산입니다.

  • peek: 스택의 맨 위에 있는 데이터를 제거하지 않고 확인만 하는 연산입니다.

  • is_empty: 스택이 비어 있는지를 확인하는 연산입니다.


파이썬에서의 스택 구현

파이썬에서는 리스트(List)를 이용해 간단히 스택을 구현할 수 있습니다.

리스트의 append() 메서드를 사용해 데이터를 추가하고, pop() 메서드를 사용해 데이터를 제거하면 스택의 기본적인 기능을 구현할 수 있습니다.

파이썬에서의 스택 구현 예제
class Stack: # 스택 초기화 def __init__(self): self.stack = [] # push 연산: 스택에 데이터 추가 def push(self, item): self.stack.append(item) print(f"Push: {item}가 스택에 추가되었습니다.") # pop 연산: 스택에서 데이터 제거 def pop(self): if not self.is_empty(): item = self.stack.pop() print(f"Pop: {item}가 스택에서 제거되었습니다.") return item else: print("Pop: 스택이 비어 있습니다.") return None # peek 연산: 스택의 최상위 값 확인 def peek(self): if not self.is_empty(): return self.stack[-1] else: print("Peek: 스택이 비어 있습니다.") return None def is_empty(self): return len(self.stack) == 0 # 스택 사용 예시 my_stack = Stack() my_stack.push(1) # Push: 1이 스택에 추가 my_stack.push(2) # Push: 2가 스택에 추가 print(f"Peek: 현재 스택의 최상위 값은 {my_stack.peek()}입니다.") my_stack.pop() # Pop: 2가 스택에서 제거 my_stack.pop() # Pop: 1이 스택에서 제거 my_stack.pop() # 스택이 비어 있어 제거할 수 없음

정리하면?

  • 스택은 LIFO(Last In, First Out) 구조를 따르는 자료구조입니다.

  • 주요 연산으로는 push(추가), pop(제거), peek(확인), is_empty(비어 있는지 확인)이 있습니다.

Mission
0 / 1

빈칸에 가장 적합한 스택의 연산은 무엇일까요?

스택의 맨 위에 새로운 데이터를 추가하는 연산은 입니다.
push
pop
peek
is_empty

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행

실행 결과