μ΄λ² λ¬Έμ λ, λ¬Έμ μ΄λ¦ κ·Έλλ‘ νλ₯Ό ꡬννλ λ¬Έμ μ΄λ€.
μ λ²μλ μ€νμ κΈ°λ₯μ μ§μ ꡬννμλλ°, νμ μ€νμ μ°¨μ΄μ μ
νλ λ°μ΄ν°κ° λ¨Όμ λ€μ΄μ¨ μμλλ‘ μΆμΆμ΄ λλ€λ κ²μ΄λ€.
μ€νμ pop μ κ°μ₯ μ΅κ·Όμ λ€μ΄κ° λ°μ΄ν°κ°μ΄ λμ€λ κ²μ΄κ³
νμ pop μ κ°μ₯ λ¨Όμ λ€μ΄μ¨ λ°μ΄ν° κ°μ΄ λμ€λ κ²μ΄λ€.
μ΄ λ¬Έμ μμ λͺ λ Ή μκ° 10000κ° μ΄λ―λ‘ 10001 ν¬κΈ°μ int λ°°μ΄μ λ¨Όμ μμ±νμλ€.
κ·Έλ¦¬κ³ stack ꡬν λ¬Έμ μ μ°¨μ΄μ μ, indexλ₯Ό first index μ last index 2κ°λ₯Ό μ‘°μ νλ©΄μ ꡬνν΄μΌνλ€.
first index μ last indexλ 0μμ μμνκ³ , pushν λλ§λ€ last index κ°μ΄ μ΄λνλ©΄μ λ°μ΄ν°κ° μ±μμ§κ³
pop ν λλ§λ€ first indexκ° μ΄λνλ©΄μ λ°μ΄ν°κ° μμ λλ€.
κ·Έλ¦¬κ³ frist index - last index κ°μ΄ λ°μ΄ν°μ κ°―μ μΌ κ²μ΄κ³ , frist index == last index μΌλ λ°μ΄ν°κ° μ무κ²λ μμ±μμ Έμμμ μ μ μλ€.
μμ κ°μ μ¬νλ€μ μκ°νλ©΄μ ꡬννλ©΄ λλ€!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static int first = 0;
static int last = 0;
static int[] array = new int[10001];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.valueOf(br.readLine());
for (int i = 1; i <= N; i++) {
String[] input = br.readLine().split(" ");
if (input[0].equals("push")) {
push(Integer.valueOf(input[1]));
} else if (input[0].equals("pop")) {
pop();
} else if (input[0].equals("size")) {
size();
} else if (input[0].equals("empty")) {
empty();
} else if (input[0].equals("front")) {
front();
} else if (input[0].equals("back")) {
back();
}
}
}
static void push(int X) {//push X: μ μ Xλ₯Ό νμ λ£λ μ°μ°μ΄λ€.
array[last++] = X;
}
static void pop() {//pop: νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
if (last - first == 0) {
System.out.println(-1);
} else {
System.out.println(array[first++]);
}
}
static void size() {//size: νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
System.out.println(last - first);
}
static void empty() {//empty: νκ° λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
if (last - first == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
}
static void front() {//front: νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
if (last - first == 0) {
System.out.println(-1);
} else {
System.out.println(array[first]);
}
}
static void back() { //back: νμ κ°μ₯ λ€μ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
if (last - first == 0) {
System.out.println(-1);
} else {
System.out.println(array[last - 1]);
}
}
}