[λ°±μ€/Java] λ± 10866
λ¬Έμ
https://www.acmicpc.net/problem/10866
10866λ²: λ±
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 ≤ N ≤ 10,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§
www.acmicpc.net
νμ΄
λ±μ μ¬μ©λ²μ μμ§νλ©΄ ν μ μλ λ¬Έμ μ΄λ€.
λ± μ¬μ©λ²
https://dovnaldisn.tistory.com/96
[μλ£κ΅¬μ‘°] λ±(Deque)
λ±(Deque)μ΄λ? μμͺ½ λμμ μ½μ κ³Ό μμ κ° κ°λ₯ν μλ£κ΅¬μ‘°μ΄λ€. μ μ μ μΆ(FIFO), νμ μ μΆ(LIFO) κ°λ μ΄ λͺ¨λ μ μ©μ΄ λλ μλ£κ΅¬μ‘°μ΄λ€. Javaμμ Dequeμ java.util.Deque μΈν°νμ΄μ€λ₯Ό μ΄μ©ν΄ ꡬνν μ
dovnaldisn.tistory.com
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
/**
* μ μ Xλ₯Ό λ±μ μμ λ£λλ€.
*
* @param x
* @param deque
*/
public void pushFront(int x, Deque<Integer> deque) {
deque.offerFirst(x);
}
/**
* μ μ Xλ₯Ό λ±μ λ€μ λ£λλ€.
*
* @param x
* @param deque
*/
public void pushBack(int x, Deque<Integer> deque) {
deque.offerLast(x);
}
/**
* λ±μ κ°μ₯ μμ μλ μ λΉΌκΈ°, μλ κ²½μ° -1
*
* @param deque
* @return
*/
public int popFront(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.pollFirst();
}
}
/**
* λ±μ κ°μ₯ λ€μ μλ μ λΉΌκΈ°, μλ κ²½μ° -1
*
* @param deque
* @return
*/
public int popBack(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.pollLast();
}
}
/**
* λ±μ λ€μ΄μλ μ μμ κ°μ
*
* @param deque
* @return
*/
public int dequeSize(Deque<Integer> deque) {
return deque.size();
}
/**
* λ±μ΄ λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0
*
* @param deque
* @return
*/
public int empty(Deque<Integer> deque) {
if (deque.isEmpty()) {
return 1;
} else {
return 0;
}
}
/**
* λ±μ κ°μ₯ μμ μλ μ μ μΆλ ₯, μλ κ²½μ° -1 μΆλ ₯
*
* @param deque
* @return
*/
public int viewFront(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.peekFirst();
}
}
/**
* λ±μ κ°μ₯ μμ μλ μ μ μΆλ ₯, μλ κ²½μ° -1 μΆλ ₯
*
* @param deque
* @return
*/
public int viewBack(Deque<Integer> deque) {
if (deque.isEmpty()) {
return -1;
} else {
return deque.peekLast();
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Main m = new Main();
Deque<Integer> deque = new LinkedList<>();
int num = Integer.parseInt(br.readLine());
int number;
for (int i = 0; i < num; i++) {
String input = br.readLine();
String[] inputStr = input.split(" ");
switch (inputStr[0]) {
case "push_front":
m.pushFront(Integer.parseInt(inputStr[1]), deque);
break;
case "push_back":
m.pushBack(Integer.parseInt(inputStr[1]), deque);
break;
case "pop_front":
number = m.popFront(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "pop_back":
number = m.popBack(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "size":
number = m.dequeSize(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "empty":
number = m.empty(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "front":
number = m.viewFront(deque);
bw.write(String.valueOf(number) + "\n");
break;
case "back":
number = m.viewBack(deque);
bw.write(String.valueOf(number) + "\n");
break;
}
}
bw.flush();
bw.close();
}
}
μ λ΅