728x90
문제
스택을 직접 구현해서 주어진 명령어에 맞게 실행 결과를 출력하라.
접근 방식
스택의 크기는 가변적으로 늘어나야 하기 때문에
Vector 혹은 ArrayList를 사용해서 구현해주면 된다.
풀이
private static class Stack {
Vector<Integer> vector = new Vector<>();
private void push(Integer x) {
vector.add(x);
}
private int pop() {
try {
return vector.remove(vector.size() - 1);
} catch (Exception e) {
return -1;
}
}
private int size() {
return vector.size();
}
private int empty() {
return size() == 0 ? 1 : 0;
}
private int top() {
try {
return vector.get(size() - 1);
} catch (Exception e) {
return -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));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
Stack stack = new Stack();
for (int i = 0; i < n; i++) {
String[] command = br.readLine().split(" ");
switch (command[0]) {
case "push": {
stack.push(Integer.parseInt(command[1]));
break;
}
case "pop": {
sb.append(stack.pop()).append("\n");
break;
}
case "size": {
sb.append(stack.size()).append("\n");
break;
}
case "empty": {
sb.append(stack.empty()).append("\n");
break;
}
case "top": {
sb.append(stack.top()).append("\n");
break;
}
}
}
bw.write(sb.toString());
bw.flush();
}
위처럼 구현한 스택 클래스를 명령어에 맞게 호출해서 사용한다.
'Java > Algorithms' 카테고리의 다른 글
[백준] 1874번 : 스택 수열 (0) | 2023.10.02 |
---|---|
[백준] 10773번 : 제로 (0) | 2023.10.01 |
[백준] 1158번 : 요세푸스 문제 (0) | 2023.10.01 |
[백준] 5397번 : 키로거 (0) | 2023.09.29 |
[백준] 1406번 : 에디터 (0) | 2023.09.29 |