ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10866번 - 덱
    알고리즘/백준 2023. 6. 6. 13:17
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayDeque;
    import java.util.StringTokenizer;
    
    public class Main {
    	
    	public static void main(String[] args) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		ArrayDeque<Integer> deque = new ArrayDeque<>();
    		StringTokenizer st;
    		StringBuilder sb = new StringBuilder();
    		int N = Integer.parseInt(br.readLine());
    		String command;
    		for(int i=0;i<N;i++) {
    			st = new StringTokenizer(br.readLine());
    			command = st.nextToken();
    			if(command.equals("push_front")) {
    				deque.push(Integer.parseInt(st.nextToken()));
    			} else if(command.equals("push_back")) {
    				deque.offer(Integer.parseInt(st.nextToken()));
    			}
    			else if(command.equals("front")) {
    				sb.append(deque.isEmpty() ? -1+"\n" : deque.peek()+"\n");
    			} else if(command.equals("back")) {
    				sb.append(deque.isEmpty() ? -1+"\n" : deque.peekLast()+"\n");
    			} else if (command.equals("size")) {
    				sb.append(deque.size()+"\n");
    			} else if (command.equals("empty")) {
    				sb.append(deque.isEmpty() ? 1+"\n" : 0+"\n");
    			} else if (command.equals("pop_front")){
    				sb.append(deque.isEmpty() ? -1+"\n" : deque.poll()+"\n");
    			} else {
    				sb.append(deque.isEmpty() ? -1+"\n" : deque.pollLast()+"\n");
    			}
    		}
    		System.out.println(sb);
    		br.close();
    	}
    }

    이번에도 역시 Java의 ArrayDeque를 이용해 해결했습니다. 한 가지 주의할 점은 Deque에서는 Stack과 Queue의 모든 메서드들을 활용할 수 있는데 push와 offer는 위치가 다르지만 pop과 poll은 같기 때문에 pop대신 pollLast를 이용해야 한다는 점입니다.

    '알고리즘 > 백준' 카테고리의 다른 글

    11650번 - 좌표 정렬하기  (0) 2023.06.06
    1676번 - 팩토리얼 0의 개수  (2) 2023.06.06
    10845번 - 큐  (2) 2023.06.06
    10828번 - 스택  (2) 2023.06.06
    10816번 - 숫자 카드 2  (1) 2023.06.06
Designed by Tistory.