•
스택이란?
- 자료 구조 중 하나
- 상자에 물건을 쌓아 올리듯 데이터를 쌓는 자료구조
- 나중에 들어간것이 먼저 나오는 Last in First out 구조
•
스택 특징
- 먼저 들어간 자료가 나중에 나옴 LIFO구조(Last in First Out)
- 시스템 해킹에서 버퍼 오버 플로우 취약점을 이용한 공격을 할때 스택 메모리에서 함
- 인터럽트 처리, 수식의 계산, 서브루틴의 복귀 번지 저장에 쓰임
- 그래프의 깊이 우선탐색에 사용 (DFS)
- 재귀적 함수를 호출 할 때 사용
•
정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class N10828 {
static Stack<Integer>s= new Stack<>();
static inttop;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String com;
int p=0;
StringTokenizer st;
for(int i=0;i<N;i++)
{
st = new StringTokenizer(br.readLine());
if(st.countTokens()==2)
{
com = st.nextToken();
p = Integer.parseInt(st.nextToken());
solution_push(com,p);
}else
{
com = st.nextToken();
solution(com);
}
}
}
public static void solution_push(String com, int p)
{
s.push(p);
top= p;
}
public static void solution(String com)
{
if(com.equals("pop"))
{
if(s.empty())
{
System.out.println(-1);
}else {
System.out.println(s.pop());
}
}else if(com.equals("size"))
{
System.out.println(s.size());
}else if(com.equals("empty"))
{
if(s.empty())
{
System.out.println(1);
}else
{
System.out.println(0);
}
}else if(com.equals("top"))
{
if(s.empty()){
System.out.println(-1);
}else {
System.out.println(s.peek());
}
}
}
}
Plain Text
복사
•
관련 함수
- stack.push() : 값 추가
- stack.pop() : 값 제거 후 출력
- stack.clear() : 전체 값 제거
- stack.peek() : 가장 위의 값 출력
- stack.size() : 스택 크기 출력
- stack.empty() : 스택이 비워있는지 확인
- stack.contains() : 스택에 값이 있는지 확인