1. 배열로 스택 구현하여 문제풀이
import java.util.Scanner;
class Stack{
private int[] stack;
private int topIndex = -1;
Stack(){
}
Stack(int number){ // 배열의 크기는 최대 명령어 수이다.
stack = new int[number];
}
public void push(int x) {
stack[++topIndex] = x;
}
public int pop() {
if (isEmpty()) {
return -1;
}
else {
return stack[topIndex--];
}
}
public int size() {
return topIndex + 1;
}
public boolean isEmpty() {
if(size()==0)
return true;
else
return false;
}
public int top() {
if(isEmpty())
return -1;
else
return stack[topIndex];
}
}
public class Main {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
Stack stack = new Stack(number);
for(int i = 0; i <number; i++) {
String command = scanner.next();
switch(command) {
case "push":
int x = scanner.nextInt();
stack.push(x);
break;
case "pop":
System.out.println(stack.pop());
break;
case "empty":
if(stack.isEmpty())
System.out.println(1);
else
System.out.println(0);
break;
case "top":
System.out.println(stack.top());
break;
case "size":
System.out.println(stack.size());
break;
}
}
}
}
2. Stack 라이브러리를 이용하여 문제풀이
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
Stack stack = new Stack();
for(int i = 0; i <number; i++) {
String command = scanner.next();
switch(command) {
case "push":
int x = scanner.nextInt();
stack.push(x);
break;
case "pop":
if (stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.pop());
break;
case "empty":
if (stack.isEmpty())
System.out.println(1);
else
System.out.println(0);
break;
case "top":
if (stack.isEmpty())
System.out.println(-1);
else
System.out.println(stack.peek());
break;
case "size":
System.out.println(stack.size());
break;
}
}
}
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 10845번 큐 (JAVA) (0) | 2020.03.16 |
---|