문제
문제에는 스택을 구현하라고 돼 있지만 자바 기본 Stack 클래스를 사용해도 될 것 같다.
직접 구현하려면 아래 링크 참조
풀이
명령이 줄글로 되어 있지만, 1번은 push(), 2번은 pop(), 4번은 empty(), 5번은 peek()와 동일하다.
모두 Stack 클래스의 기본 메소드로 제공되는 것들이다.
Stack<E> 클래스는 Vector<E> 클래스를 상속받으므로 size() 메소드를 사용해 3번 또한 해결할 수 있다.
아래는 기타 설명 링크들
늘 그렇듯 BufferedReader로 문자열을 입력받아 StringTokenizer로 분리하였다. 명령은 cmd, 입력값은 num에 저장하였고(num은 1번 명령일 때만), switch문으로 1~5번 명령을 나눠 주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
Stack<Integer> stack=new Stack<>();
int N=Integer.parseInt(in.readLine());
for(int i=0; i<N; i++) {
st=new StringTokenizer(in.readLine());
int cmd=Integer.parseInt(st.nextToken());
switch(cmd) {
case 1: //push
int num=Integer.parseInt(st.nextToken());
stack.push(num);
break;
case 2: //pop
if(stack.empty())
System.out.println(-1);
else
System.out.println(stack.pop());
break;
case 3: //size
System.out.println(stack.size());
break;
case 4: //empty
if(stack.empty())
System.out.println(1);
else
System.out.println(0);
break;
case 5: //peek
if(stack.empty())
System.out.println(-1);
else
System.out.println(stack.peek());
break;
default:
break;
}//end of switch
}
}
}
StringBuilder로 출력을 모아 뒀다 한 번에 출력하면 더 깔끔할 듯한데
이미 제출해버려서 귀찮다
'백준' 카테고리의 다른 글
백준 4949: 균형잡힌 세상(java) (0) | 2024.07.12 |
---|---|
백준 10773: 제로(java) (0) | 2024.07.12 |
백준 9012: 괄호(java) (0) | 2024.07.12 |
백준 10828: 스택(java) (0) | 2024.07.12 |
백준 1676: 팩토리얼 0의 개수(java) (0) | 2024.07.09 |