Stack 클래스를 직접 구현해보자.
import java.io.*;
import java.util.ArrayList;
public class Main {
private ArrayList<Integer> arrayList;
public Main() {
this.arrayList = new ArrayList<>();
}
public void push(int item) {
arrayList.add(item);
}
public int pop() {
return arrayList.size() < 1 ? -1 :arrayList.remove(arrayList.size()-1);
}
public int size() {
return arrayList.size();
}
public int empty() {
return arrayList.size() < 1 ? 1 : 0;
}
public int top() {
return arrayList.size() < 1 ? -1 : arrayList.get(arrayList.size()-1);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Main stack = new Main();
while (N-- > 0) {
String[] arr = br.readLine().split(" ");
switch (arr[0]) {
case "push":
int num = Integer.parseInt(arr[1]);
stack.push(num);
break;
case "top":
bw.append(stack.top() + "\n");
break;
case "size":
bw.append(stack.size() + "\n");
break;
case "empty":
bw.append(stack.empty() + "\n");
break;
case "pop":
bw.append(stack.pop() + "\n");
break;
}
}
bw.flush();
bw.close();
}
}
정답
스택은 정적과 동적으로 나뉘는데 arrayList로 구현은 가능한데,
배열로 구현하는 것이 어려웠다.
배열은 선언순간부터 크기를 지정해야 하기 때문에 length가 항상 값들이 다 들어있는지 확신할 수 없다. 그래서 별도로 private int size
식으로 변수를 선언하고 push할때마다 size++
을 해주어야 한다.
1시간 내