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();
}
}
'Algorithm Solving > Java' 카테고리의 다른 글
[BOJ] 백준 7569번 : 토마토 - Java (0) | 2024.12.29 |
---|---|
[BOJ] 백준 1697번 : 숨바꼭질 - Java (1) | 2024.12.26 |
[BOJ] 백준 1929번 : 소수 구하기 - Java (0) | 2024.12.23 |
[BOJ] 백준 2751번 : 수 정렬하기 2 - Java (1) | 2024.12.20 |
[BOJ] 백준 1260번 : DFS와 BFS - Java (0) | 2024.12.19 |