https://www.acmicpc.net/problem/10828
스택 자료구조를 만드는 문제이다.
자바에 원래 존재하는 Stack을 이용하지 않고 배열과 메소드를 이용해서 구현해보겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
// 다른 메소드에서도 사용할 수 있게 main 메소드 안에서 선언하지 않는다.
static int[] stack = new int[10000];
// 스택의 사이즈를 기록한다. 이를 통해 top을 알 수 있다.
static int size = 0;
public static void main(String[] args) throws IOException {
// 시간 단축을 위해 Scanner대신 BufferedReader를 이용한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// Test Case T
int T = Integer.parseInt(br.readLine());
for(int i=0; i<T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String op = st.nextToken();
if(op.equals("push")) {
int element = Integer.parseInt(st.nextToken());
push(element);
}else if(op.equals("top")) {
sb.append(top()).append("\n");
}else if(op.equals("size")) {
sb.append(size()).append("\n");
}else if(op.equals("empty")) {
sb.append(empty()).append("\n");
}else {
sb.append(pop()).append("\n");
}
}
System.out.println(sb);
}
static int empty() {
if(size == 0)
return 1;
else
return 0;
}
static void push(int x) {
// 스택의 top에 x를 넣는다. 그리고 size를 늘려준다.
stack[size++] = x;
}
static int pop() {
// 만약 스택이 비어있다면 pop할 수 없으니 -1을 return 해준다.
if(empty() == 1)
return -1;
else
return stack[--size];
}
static int size() {
return size;
}
static int top() {
// 만약 스택이 비어있다면 top에 있는것이 없으니 -1을 return 해준다.
if(empty() == 1)
return -1;
else
return stack[size - 1];
}
}
'[JAVA] > 자바[JAVA] 백준' 카테고리의 다른 글
BOJ(백준 온라인 저지) 9012번 with 자바[JAVA] (0) | 2022.01.18 |
---|---|
BOJ(백준 온라인 저지) 9093번 with 자바[JAVA] (0) | 2022.01.18 |
BOJ(백준 온라인 저지) 2884번 - 단계별로 풀어보기 with 자바[JAVA] (0) | 2022.01.13 |
BOJ(백준 온라인 저지) 14681번 - 단계별로 풀어보기 with 자바[JAVA] (0) | 2022.01.12 |
BOJ(백준 온라인 저지) 2753번 - 단계별로 풀어보기 with 자바[JAVA] (0) | 2022.01.12 |