코딩테스트
백준 - 10828번 스택(Stack)
NellKiM
2025. 4. 9. 23:19
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main_10828 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
//정수형 데이터 저장할 수 있는 스택 객체생성
Stack<String> stack = new Stack<>();
int N = Integer.parseInt(br.readLine()); //명령어 개수
int size=0; //요소의 개수를 표현, size() 또는 isEmpty() 메서드를 호출 안해도 됨.
for(int i=1; i<=N; i++) {
String command = br.readLine();
boolean flag = true;
// StringTokenizer tokens = new StringTokenizer( br.readLine());
// String command = tokens.nextToken();
//명령어를 if~else if~ else 또는 switch~case를 통해 구분하기!!
// if(command.equals("push")) {}else if(command.equals("pop")) {}
switch(command) {//프로그램의 가독성을 높여줌
case "pop": //가장 마지막에 입력된 값 출력! => 비어 있으면 -1
// if( stack.isEmpty() ) System.out.println(-1);
// else System.out.println(stack.pop()); //출력되어지는 값이 많으므로 모아서 출력 !!
// if( stack.isEmpty() ) sb.append(-1);
if( size==0 ) sb.append("-1");
else {
sb.append(stack.pop()); //출력되어지는 값이 많으므로 모아서 출력 !!
size--;
}
break;
case "size": sb.append(size);
break;
case "empty": if(size==0) sb.append("1");//비어있음 참
else sb.append("0");//비어있음 거짓
break;
case "top": if(size==0) sb.append("-1");
else sb.append(stack.peek());
break;
default:// "push":
// command ==> "push 1"
StringTokenizer tokens = new StringTokenizer(command);
tokens.nextToken(); //"push" 스킵
stack.push(tokens.nextToken()); //"1"
size++;//요소추가
flag = false;
}//한개의 명령어 처리 switch
if(flag)sb.append('\n');
}//명령어들 처리 for
System.out.println(sb.toString());
br.close();
}//main
}