Study/Java

[JAVA] 스택(stack)

토기발 2022. 11. 22. 23:59

백준 알고리즘 강의를 들으며 정리한 내용입니다.

 


 

스택은 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 구조이다.

마지막에 넣은 것이 먼저 나오기 때문에 (LIFO: Last In First Out)라고 한다.

 

push: 자료를 넣는 연산. return 값 x

pop: 스택에서 자료를 빼는 연산.  return 값 x

top: 스택의 가장 위에 있는 자료를 보는 연산. 자료 값이 return됨.

empty: 스택이 비었는지 아닌지 알아보는 연산.  true, false return

size: 스택에 저장되어 있는 자료의 개수를 알아보는 연산. 자료 개수 return

 

 

스택의 구현

 

일차원 배열로 구현 가능하다.

int stack[1000];
int size = 0;
	void push(int data) {
		stack[size] = data;
		size +=1;
	}
	
	void pop() {
		stack[size-1] = 0;
		size -=1;
	}

 

 

stack 문제

 

https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

https://www.acmicpc.net/problem/9012

 

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

https://www.acmicpc.net/problem/1406

 

1406번: 에디터

첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수

www.acmicpc.net