Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 리눅스셸명령어
- 리눅스퍼미션
- 코테
- 리눅스
- 터미널명령어
- 더오름
- 백준
- 파이썬
- 코테준비
- 네트워크면접
- 백준1312
- 컴퓨터네트워크
- 자료구조
- 디렉토리관리
- 제주코딩베이스캠프
- 코딩테스트
- Linux
- 링크명령어
- 파일명령어
- 네트워크정리
- 네트워크기초
- 네트워크
- 제주ICT
- 백준2587
- Python
- 네트워크핵심정리
- javascript
- 위니브
- 리눅스기초
- 개발자
Archives
- Today
- Total
hyei-devlog
스택(Stack)이란? 본문
스택(stack)은 데이터가 한쪽 끝에서만 들어오고 나가는 자료구조다.
쉽게 말해, 마지막에 넣은 데이터가 가장 먼저 나오는 구조로 동작한다. 이를 LIFO(Last In, First Out) 구조라고도 한다.
예를 들어, 책을 쌓아 올릴 때 가장 위에 놓인 책을 먼저 꺼내는 것과 같은 방식이다.
데이터를 넣는 것을 push(푸쉬), 데이터를 꺼내는 것을 pop(팝)이라고 한다.

스택의 동작 원리
- 데이터를 스택에 넣으면(top이 가리키는 위치에 추가) push 연산이 수행된다.
- 데이터를 스택에서 꺼내면(top이 가리키는 데이터를 제거) pop 연산이 수행된다.
- 가장 마지막에 추가된 데이터가 가장 먼저 제거된다.
- 스택이 비었는지 확인할 수도 있다.
스택의 연산
스택에서 기본적으로 제공하는 연산은 다음과 같다.
- push(x): 데이터를 스택의 가장 위(top)에 추가한다.
- pop(): 스택의 가장 위(top) 데이터를 제거하고 반환한다.
- top(): 스택의 가장 위(top) 데이터를 반환하지만 제거하지 않는다.
- is_empty(): 스택이 비어 있는지 확인하여, 비었다면 True, 아니라면 False를 반환한다.
스택의 구현
스택은 프로그래밍 언어별로 다양한 방식으로 구현할 수 있다.
Python에서는 ist의 append()와 pop()을 사용하여 쉽게 구현할 수 있고, JavaScript에서는 Array의 push()와 pop()을 활용할 수 있다.
Python 스택 구현 예제
class Stack:
def __init__(self):
self.stack = []
def push(self, x):
self.stack.append(x)
def pop(self):
if not self.is_empty():
return self.stack.pop()
return "Stack is empty"
def top(self):
if not self.is_empty():
return self.stack[-1]
return "Stack is empty"
def is_empty(self):
return len(self.stack) == 0
# 스택 사용 예제
s = Stack()
s.push(1)
s.push(2)
s.push(3)
print(s.top()) # 3
print(s.pop()) # 3
print(s.is_empty()) # False
JavaScript 스택 구현 예제
class Stack {
constructor() {
this.stack = [];
}
push(x) {
this.stack.push(x);
}
pop() {
return this.stack.length ? this.stack.pop() : "Stack is empty";
}
top() {
return this.stack.length ? this.stack[this.stack.length - 1] : "Stack is empty";
}
is_empty() {
return this.stack.length === 0;
}
}
// 스택 사용 예제
const s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.top()); // 3
console.log(s.pop()); // 3
console.log(s.is_empty()); // false
스택의 활용
스택은 다양한 곳에서 활용된다. 대표적인 예시는 다음과 같다.
- 웹 브라우저의 뒤로 가기(Back) 기능: 방문한 페이지를 스택에 저장하고, pop을 통해 이전 페이지로 이동한다.
- 수식 계산(연산자 우선순위 처리): 중위 표기법을 후위 표기법으로 변환하는 과정에서 사용된다.
- 재귀 함수(함수 호출 스택): 프로그램이 함수 호출을 관리할 때 내부적으로 스택을 사용한다.
- 문자열 괄호 검사: 여는 괄호를 push, 닫는 괄호를 pop 하면서 올바른 괄호 조합을 판별한다.
스택은 간단하지만 강력한 자료구조다. 알고리즘 문제를 풀 때도 자주 사용되니 개념을 확실히 이해하고 직접 구현해보는 것이 좋다!
눈떠보니 코딩테스트 전날 강의 | 제주코딩베이스캠프 - 인프런
제주코딩베이스캠프 | , [사진] [사진][사진][사진] 혹시 다들 이런 경험 없으신가요?눈떠보니 바로 다음날이 코딩 테스트 .. !! 😱 그래서 제주코딩베이스캠프가 준비했습니다! 기본적으
www.inflearn.com
'Python' 카테고리의 다른 글
트리(Tree)란? (0) | 2025.02.28 |
---|---|
큐(Queue)란? (0) | 2025.02.28 |
[파이썬 문법 체크] collections 모듈 (0) | 2025.01.31 |
[파이썬 문법 체크] 제너레이터(Generator)와 이터레이터(Iterator) (2) | 2025.01.31 |
[파이썬 문법 체크] 컴프리헨션(comprehension) (0) | 2025.01.31 |