코드: https://github.com/kgh128/Problem-Solving/blob/main/src/Baekjoon/p10828.java
Stack 클래스 구현멤버 변수는 실제 정수를 저장할 int 배열 stack과, 배열에 가장 최근에 저장된 정수의 인덱스를 가리키는(스택의 가장 위를 가리키는) top이다. 멤버 함수는 생성자 Stack(), 주어진 명령을 처리할 push(), pop(), size(), empty(), top()이다.
명령의 수는 최대 10,000개이므로 스택에 저장되는 정수의 개수도 최대 10,000개이다. (push 명령이 10,000번 나오는 경우) 따라서 Stack()에서 stack의 크기가 10,000개가 되도록 초기화한다. 또한 처음에는 배열이 비어있으므로 top은 -1로 초기화한다.
top 변수는 다음에 정수가 저장될 공간의 인덱스가 아닌 가장 최근에 정수가 저장된 공간의 인덱스이다. 예를 들어, stack[0]에 정수가 저장되면 top은 1이 아니라 0이다. 이 기준을 가지고 Stack(), push(), pop(), size(), empty(), top()을 구현하였다.
p10828클래스 안에static함수인main함수와Stack클래스를 구현했다. 이때,Stack클래스도static클래스로 정의해야만main함수에서Stack()을 호출하여Stack클래스의 객체를 만들 때 오류가 뜨지 않는다. (이거 안해서 오류 떴었음.)
String[] command = br.readLine().split(" ");
위의 코드로 명령을 입력받는다. command[0]이 명령의 키워드(push, pop, size, empty, top)이므로 command[0]과 일치하는 명령의 키워드를 찾는다. (if (command[0].equals("push")) 형식)
push 명령은 스택에 넣을 정수가 command[1]로 존재한다. String인 command[1]을 정수로 바꾸고 stack.push(X)를 호출하여 처리한다.
나머지 명령은 command[1]이 존재하지 않으므로 Stack 클래스의 객체인 stack을 통해 명령에 맞는 메소드를 호출하여 처리한다.