문제 내용은 스택에 push, pop, size, empty, top 기능을 구현해줘야 하는데 뭔가 어려워 보이지만 딱히 어려울 것이 없다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static Stack<Integer> stack = new Stack<>();
public static void OrderProcess(String s) {
String[] split = s.split(" ");
if (split[0].equals("push")) {
stack.push(Integer.parseInt(split[1]));
} else if (split[0].equals("pop")) {
if (stack.empty()) {
System.out.println(-1);
} else {
System.out.println(stack.pop());
}
} else if (split[0].equals("size")) {
System.out.println(stack.size());
} else if (split[0].equals("empty")) {
if (stack.empty()) {
System.out.println(1);
} else {
System.out.println(0);
}
} else if (split[0].equals("top")) {
if (stack.empty()) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 0; i < count; i++) {
OrderProcess(br.readLine());
}
}
}
먼저 클래스 하단에 public static stack을 생성해서 어디서나 참조할 수 있도록 한 뒤, 메인 메소드에서는 받은 명령어만 프로세스 메소드에 넣어주면 되는데, 들어온 텍스트를 split으로 처리하면 push의 경우에만 숫자까지 같이 들어오고 나머지는 분리된 값 없이 문자열만 들어오지만 문제 없이 처리 가능하고
나머지는 전반적으로 stack의 기능을 알고 있으면 출력부만 주의해서 구현해주면 되겠다.
Leave a Reply