https://www.acmicpc.net/problem/10828
문제 상황
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
Stack stack = new Stack(num);
int count = 0;
for(int i = 0; i < num; i++){
String[] str = br.readLine().split(" ");
switch (str[0]){
case "push" :
stack.push(Integer.parseInt(str[1]));
break;
case "pop":
System.out.println(stack.pop());
break;
case "size":
System.out.println(stack.size());
break;
case "empty":
System.out.println(stack.empty());
break;
case "top":
System.out.println(stack.top());
break;
}
}
br.close();
}
}
class Stack{
private int size;
private int[] arr;
private int top;
public Stack(int size) {
this.size = size;
this.arr = new int[size];
this.top = 0;
}
public void push(int n){
arr[top++]=n;
}
public int pop(){
if(top <= 0){
return -1;
}
return arr[--top];
}
public int size(){
return top;
}
public int top(){
if(top<=0) return -1;
else return arr[top-1];
}
public int empty() {
if(top<=0) return 1;
else return 0;
}
}
'알고리즘 > 자료구조' 카테고리의 다른 글
[자료구조] 스택 (Stack) (0) | 2023.03.21 |
---|---|
[백준] 10845 큐 - Java (0) | 2023.03.20 |
[프로그래머스] 같은 숫자는 싫어 (스택/큐) - Java (0) | 2023.03.19 |
[프로그래머스] 배열의 유사도 (0) | 2023.03.13 |
[프로그래머스] 중앙값 구하기 - Java (0) | 2023.03.07 |