본문 바로가기

알고리즘/스택

10828번 스택

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;


public class Main {

	static int index=0;
	static int[] arr=new int[10001];
	static int resultValue=0;
	
	public static void main(String[] args)  {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		try{
			String tempCase=null; 
			tempCase=br.readLine();
			int testCase=0;
			String tempLine=null;
			String command=null;
			testCase=Integer.parseInt(tempCase);
			String tempStr=null;
			int inputValue=0;
			for(int i=0;i<testCase;i++){
				tempLine=br.readLine();
				StringTokenizer st=new StringTokenizer(tempLine);
				command=(String)st.nextElement();
				if("push".equals(command)){
					tempStr=(String)st.nextElement();
					inputValue=Integer.parseInt(tempStr);
					push(inputValue);
				}else if("top".equals(command)){
					resultValue=top();
					bw.write(resultValue+"\n");
				}else if("size".equals(command)){
					resultValue=size();
					bw.write(resultValue+"\n");
				}else if("empty".equals(command)){
					resultValue=empty();
					bw.write(resultValue+"\n");
				}else if("pop".equals(command)){
					resultValue=pop();
					bw.write(resultValue+"\n");
				}
			}
			bw.flush();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(bw!=null){
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(br!=null){
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	// push X: 정수 X를 스택에 넣는 연산이다.
	public static void push(int input){
		arr[index]=input;
		index++;
	}
	
	// empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
	public  static int empty(){
		int result=1;
		if(index>0){
			result=0;
		}
		return result;
	}
	
	//size: 스택에 들어있는 정수의 개수를 출력한다.
	public static int size(){
		int result=0;
		if(empty()==0){
			result=index;
		}
		return result;
	}
	
	//top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
	public static int top(){
		int result=-1;
		if(empty()==0){
			result=arr[index-1];
		}
		return result;
	}
	
	//pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
	public static int pop(){
		int result=-1;
		if(empty()==0){
			result=arr[index-1];
			arr[index-1]=0;
			index--;
		}
		return result;
	}
}

'알고리즘 > 스택' 카테고리의 다른 글

1406번 에디터  (0) 2020.06.21
1894번 스택수열  (0) 2020.06.21
9012번 괄호  (0) 2020.06.11
9093번 단어 뒤집기  (0) 2020.06.07