스택
25 June 2019
문제 : https://www.acmicpc.net/problem/10828
이번은 스택을 구현하는 문제를 풀어보도록 하겠습니다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
Stack stack = new Stack(10000);
for (int i = 0; i < size; i++) {
String command = sc.next();
switch (command) {
case "push":
int val = sc.nextInt();
stack.push(val);
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;
}
}
}
}
class Stack {
private int top = -1;
private int[] queue;
public Stack(int max) {
queue = new int[max];
}
public void push(int val) {
top++;
queue[top] = val;
}
public int pop() {
if (top == -1) {
return -1;
}
int val = queue[top];
top--;
return val;
}
public int size() {
return top + 1;
}
public int empty() {
if (top == -1) {
return 1;
}
return 0;
}
public int top() {
if (top == -1) {
return -1;
}
return queue[top];
}
}
먼저 class를 통해 stack을 구현하고, 들어오는 값에 따라 출력을 해주도록 합니다.stack은 내부적으로 array를 통해 구현을 진행합니다.