-
[10866] 덱 - Java알고리즘 연습 2022. 2. 17. 14:39
1. 문제
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
2. 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenizer; public class Main { public static LinkedList<Integer> deque = new LinkedList(); private static int size; public static void main(String[] args) throws NumberFormatException, IOException { // 1. Read command BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); // 2. Execute command String command; StringBuilder sb = new StringBuilder(); StringTokenizer st; size = 0; for(int i = 0; i < N; i++) { st = new StringTokenizer(br.readLine(), " "); command = st.nextToken(); switch(command) { case "push_front": push_front(Integer.parseInt(st.nextToken())); break; case "push_back": push_back(Integer.parseInt(st.nextToken())); 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": if(empty()) { sb.append(1).append('\n'); }else { sb.append(0).append('\n'); } break; case "front": sb.append(front()).append('\n'); break; case "back": sb.append(back()).append('\n'); break; default: break; } } // 3. Print result System.out.println(sb); } // push_front public static void push_front(int num) { deque.addFirst(num); } // push_back public static void push_back(int num) { deque.addLast(num); } // pop_front public static int pop_front() { if(empty()) { return -1; } return deque.pollFirst(); } // pop_back public static int pop_back() { if(empty()) { return -1; } return deque.pollLast(); } // size public static int size() { return deque.size(); } // empty public static boolean empty() { return size() == 0; } // front public static int front() { if(empty()) { return -1; } return deque.getFirst(); } // back public static int back() { if(empty()) { return -1; } return deque.getLast(); } }
3. 배운점
4. 개선할 점
'알고리즘 연습' 카테고리의 다른 글
[1874] 스택 수열 - Java (0) 2022.02.22 [17299] 오등큰수 - Java (0) 2022.02.21 [10820] 문자열 분석 - Java (0) 2022.02.17 [4949] 균형잡힌 세상 - Java (0) 2022.02.16 [11767] 접미사 배열 - Java (0) 2022.02.15