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
- 알고리즘
- Python
- SSAFYcial
- SSAFY
- 백준
- QuerySetAPI
- 싸피셜
- Javascript
- sqld
- 셀프넘버
- 머신러닝종류
- 14658
- git
- 플로이드워셜
- vitepwa
- VITE
- unionfind
- 리액트
- pwa적용하기
- js
- TypeScript
- 싸피
- 데코레이터
- SQL
- queryset
- react
- db
- Django
- PWA
- 싸피10기
Archives
- Today
- Total
Meme's IT
[자료구조] 스택(Stack) 본문
스택(Stack)이란?
영어 그대로 쌓아놓은 것이라고 생각하면 편함
스택의 핵심은 후입선출, 즉 가장 최근에 들어온 데이터가 가장 먼저 나감
스택의 연산
push
: 삽입, 저장소에 자료를 저장pop
: 삭제, 저장소에서 자료를 꺼냄, 순서는 최근에 삽입한 자료 부터isEmpty
: 공백인지 아닌지를 확인peek
: 스택의 top에 있는 원소를 반환
스택의 구현
1. push
def pop():
global top
if top == -1:
print('underflow')
return 0
else:
top = -1
return stack[top + 1]
print(pop())
if top > -1:
top -= 1
print(stack[top + 1])
2. pop
def pop():
global top
if top == -1:
print('underflow')
return 0
else:
top = -1
return stack[top + 1]
print(pop())
if top > -1:
top -= 1
print(stack[top + 1])
스택의 응용
1. 괄호검사
조건
- 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다.
- 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다.
- 괄호 사이에는 포함관계만 존재한다.
스택을 이용해서 괄호검사를 진행
2. Function Call
main() → F1() → F2() 순서대로 함수를 쌓아놓으면, F2 → F1 → main 순서대로 함수가 끝남
= 프로그램에서의 함수 호출과 복귀에 따른 수행 순서를 관리함
재귀호출
: 자기 자신을 호출하여 순환 수행되는 것
- 예시1: 팩토리얼
- n! = n * (n - 1)!
- f(n) = n * f(n - 1)
- 예시2: 피보나치 수
여기서 만약 중복되는 값들이 존재하면 Memoization을 사용
Memoization
: 이전에 계산한 값을 메모리에 저장해서 다시 계산하지 않도록 하는 것 → 동적계산법(DP)참고
'알고리즘' 카테고리의 다른 글
[알고리즘] 알고리즘과 시간 복잡도 (0) | 2023.10.05 |
---|