λ°μν
λ¬Έμ
μ μλ₯Ό μ μ₯νλ λ±(Deque)λ₯Ό ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ μ¬λ κ°μ§μ΄λ€.
- push_front X: μ μ Xλ₯Ό λ±μ μμ λ£λλ€.
- push_back X: μ μ Xλ₯Ό λ±μ λ€μ λ£λλ€.
- pop_front: λ±μ κ°μ₯ μμ μλ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½, λ±μ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- pop_back: λ±μ κ°μ₯ λ€μ μλ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½, λ±μ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- size: λ±μ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- empty: λ±μ΄ λΉμ΄μμΌλ©΄ 1μ, μλλ©΄ 0μ μΆλ ₯νλ€.
- front: λ±μ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ λ±μ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- back: λ±μ κ°μ₯ λ€μ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ λ±μ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
μ λ ₯
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 β€ N β€ 10,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§ μμ λͺ λ Ήμ΄ μ£Όμ΄μ§λ κ²½μ°λ μλ€.
μΆλ ₯
μΆλ ₯ν΄μΌνλ λͺ λ Ήμ΄ μ£Όμ΄μ§ λλ§λ€, ν μ€μ νλμ© μΆλ ₯νλ€.
μκ° μ ν | λ©λͺ¨λ¦¬ μ ν | μ μΆ | μ λ΅ | λ§ν μ¬λ | μ λ΅ λΉμ¨ |
---|---|---|---|---|---|
0.5 μ΄ (μΆκ° μκ° μμ) | 256 MB | 75197 | 41398 | 34955 | 55.949% |
https://www.acmicpc.net/problem/10866 |
νμ΄
μ½λ
public class Main {
static Deque<Integer> deque = new LinkedList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int N = sc.nextInt(); //λͺ
λ Ήμ΄μ μ
for(int i=0; i<N; i++){
switch (sc.next()){
case "push_front":
int X = sc.nextInt();
push_front(X);
break;
case "push_back":
int Y = sc.nextInt();
push_back(Y);
break;
case "pop_front":
sb.append(pop_front()).append("\n");
break;
case "pop_back":
sb.append(pop_back()).append("\n");
break;
case "size":
sb.append(size()).append("\n");
break;
case "empty":
sb.append(empty()).append("\n");
break;
case "front":
sb.append(front()).append("\n");
break;
case "back":
sb.append(back()).append("\n");
break;
}
}
sc.close();
System.out.println(sb);
}
private static int empty(){
if(deque.isEmpty()) return 1;
return 0;
}
private static int size(){
return deque.size();
}
private static int pop_back() {
if(deque.isEmpty()) return -1;
return deque.removeLast();
}
private static int pop_front() {
if(deque.isEmpty()) return -1;
return deque.removeFirst();
}
private static void push_front(int X) {
deque.addFirst(X);
}
private static void push_back(int Y) {
deque.addLast(Y);
}
private static int front(){
if(deque.isEmpty()) return -1;
return deque.getFirst();
}
private static int back(){
if(deque.isEmpty()) return -1;
return deque.getLast();
}
}
λ°μν