728x90
문제
https://www.acmicpc.net/problem/10828
풀이 코드
스택의 개념을 알고 있다면 쉽게 풀이할 수 있는 문제라고 생각한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static class Stack {
int length;
int cur = 0; //다음 push때 값이 저장될 위치
int[] arr;
public Stack(int length) {
this.length = length;
arr = new int[length];
}
public void push(int x) {
arr[cur++] = x;
}
public int pop() {
if (size() == 0) {
return -1;
}
return arr[--cur];
}
public int size() {
return cur;
}
public int empty() {
if (size() == 0) {
return 1;
} else {
return 0;
}
}
public int top() {
if (size() == 0) {
return -1;
}
return arr[cur - 1];
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
Stack stack = new Stack(n);
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String command = st.nextToken();
if (command.equals("push")) {
int x = Integer.parseInt(st.nextToken());
stack.push(x);
} else if (command.equals("pop")) {
sb.append(stack.pop()).append("\n");
} else if (command.equals("top")) {
sb.append(stack.top()).append("\n");
} else if (command.equals("size")) {
sb.append(stack.size()).append("\n");
} else if (command.equals("empty")) {
sb.append(stack.empty()).append("\n");
}
}
System.out.println(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[알고리즘/백준] 11650 좌표 정렬하기(자바) (0) | 2021.10.04 |
---|---|
[알고리즘/백준] 10989 수 정렬하기3(자바, 카운팅 정렬, Counting Sort) (0) | 2021.10.01 |
[알고리즘/백준] 10816 숫자 카드 2(자바, Map) (0) | 2021.09.30 |
[알고리즘/백준] 10814 나이순 정렬(자바) (0) | 2021.09.30 |
[알고리즘/백준] 10773 제로(자바, 스택) (0) | 2021.09.30 |
댓글