Algorithm Solving/Java
[BOJ] 백준 10828번 : 스택 - Java
기만나🐸
2024. 12. 26. 11:26
https://www.acmicpc.net/problem/10828
- int[ ]을 선언해서 구현하는 방법
import java.io.*;
import java.util.*;
public class Main {
public static int[] stack;
public static int size = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
stack = new int[N];
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine(), " ");
String str = st.nextToken();
if (str.equals("push")) {
int num = Integer.parseInt(st.nextToken());
push(num);
} else if (str.equals("pop")){
bw.write(pop()+"\n");
} else if (str.equals("size")){
bw.write(size()+"\n");
} else if (str.equals("empty")){
bw.write(empty()+"\n");
} else if (str.equals("top")){
bw.write(top()+"\n");
}
}
bw.close();
}
/* push X: 정수 X를 스택에 넣는 연산이다. */
public static void push(int num) {
stack[size] = num;
size ++;
}
/* pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다.
만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. */
public static int pop() {
if (size == 0) {
// 스택 size가 0이면, 데이터가 없는 경우이므로 -1 반환
return -1;
} else {
// 반환 할 값은 size-1번째 인덱스; push에서 size인덱스에 입력받은 값을 넣고, size는 ++해주기 때문에
int result = stack[size-1];
stack[size-1] = 0; // result에 pop할 값을 넣었으므로, 0으로 초기화
size --;
return result;
}
}
/* size: 스택에 들어있는 정수의 개수를 출력한다. */
public static int size() {
return size;
}
/* empty: 스택이 비어있으면 1, 아니면 0을 출력한다. */
public static int empty() {
if (size == 0) {
// 스택 size가 0이면, 스택이 비어있는 경우이므로 1 반환
return 1;
} else {
return 0;
}
}
/* top: 스택의 가장 위에 있는 정수를 출력한다.
만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. */
public static int top() {
if (size == 0) {
// 스택 size가 0이면, 스택에 들어있는 정수가 없는 경우이므로 -1 반환
return -1;
} else {
// 반환 할 값은 size-1번째 인덱스; push에서 size인덱스에 입력받은 값을 넣고, size는 ++해주기 때문에
return stack[size-1];
}
}
}
- Stack<Integer> 을 선언해서 구현하는 방법
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine(), " ");
String str = st.nextToken();
if (str.equals("push")) {
int num = Integer.parseInt(st.nextToken());
stack.push(num);
}
else if (str.equals("pop")){
if (stack.empty()) bw.write(-1+"\n");
else bw.write(stack.pop()+"\n");
}
else if (str.equals("size")){
bw.write(stack.size()+"\n");
}
else if (str.equals("empty")){
if (stack.empty()) bw.write(1+"\n");
else bw.write(0+"\n");
}
else if (str.equals("top")){
if (stack.empty()) bw.write(-1+"\n");
else bw.write(stack.peek()+"\n");
}
}
bw.close();
}
}