π λ¬Έμ μ€λͺ
μ€νμ ꡬννκ³ , μ€νμ μ¬μ© λλ 5κ°μ§ 컀맨λλ₯Ό ꡬννλΌ.
push X
: μ μ Xλ₯Ό μ€νμ λ£λ μ°μ°μ΄λ€.pop
: μ€νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.size
: μ€νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.empty
: μ€νμ΄ λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.top
: μ€νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
π‘ μμ΄λμ΄
- μ€νμ
ArrayList
λ‘ μ μΈνλ€. push X
컀맨λμλ νΉμ λ¬Έμμ΄λ‘ μμνλμ§ νμΈνλstartsWith
ν¨μλ₯Ό μ¬μ©νκ³ , λ€λ₯Έ 컀λ©λμλequals
ν¨μλ₯Ό μ¬μ©νλ€..remove
λ‘ popλ κ°μ μμ νκ³ ,.add
λ‘ push λ κ°μ μΆκ°νλ€..isEmpty()
λ‘ μ€ν 리μ€νΈμ μ μ μ‘΄μ¬μ¬λΆλ₯Ό νμΈνλ€.
π μ½λ
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));
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> stack = new ArrayList<>();
for (int i = 0; i < N; i++) {
String command = br.readLine();
// [1] push
if (command.startsWith("push")) {
int X = Integer.parseInt(command.split(" ")[1]);
stack.add(X);
// [2] pop
} else if (command.equals("pop")) {
if (!stack.isEmpty()) {
System.out.println(stack.get(stack.size() - 1));
stack.remove(stack.size() - 1);
} else {
System.out.println(-1);
}
// [3] size
} else if (command.equals("size")) {
System.out.println(stack.size());
// [4] empty
} else if (command.equals("empty")) {
System.out.println(stack.isEmpty() ? 1 : 0);
// [5] top
} else if (command.equals("top")) {
if (!stack.isEmpty()) {
System.out.println(stack.get(stack.size() - 1));
} else {
System.out.println(-1);
}
}
}
}
}
β± μκ°λ³΅μ‘λ
컀맨λμ μλ₯Ό Nμ΄λΌ ν λ, κ° μ»€λ©λλ₯Ό ν λ²μ© μ²λ¦¬νκ³ κ° μ°μ°μ΄ O(1)μ΄λ―λ‘ μ 체 μκ° λ³΅μ‘λλ O(N)μ΄λ€.
βοΈ λλ μ
- ifλ§ λμ΄νλ©΄ λͺ¨λ 쑰건μ λ€ κ²μ¬νλ―λ‘, else-ifλ‘ λ¬Άμ΄μΌ λΆνμν 쑰건 κ²μ¬λ₯Ό μ€μ¬ ν¨μ¨μ λμΌ μ μλ€.