-
Java 10866 덱PS 2023. 5. 4. 00:10
풀이 :
고정된 크기의 int형 배열을 생성한 뒤 index를 가운데에서 설정하고 생성해주었습니다.
이전에 풀었던 스택 구현 문제와 기능만 더 구현하면 되는 문제라 쉽게 풀 수 있었던 문제였습니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static class CustomDeque { private int[] deque; private int front; private int rear; private int size; public CustomDeque(){ this.deque = new int[20001]; this.front = 10000; this.rear = 10000; this.size = 0; } public void pushFront(int n){ deque[front] = n; front--; size++; } public void pushRear(int n) { rear++; deque[rear] = n; size ++; } public int popFront(){ if(size == 0){ return -1; } int i = deque[front + 1]; front ++; size --; return i; } public int popBack(){ if(size == 0){ return -1; } int i = deque[rear]; rear--; size--; return i; } public int size(){ return size; } public int empty(){ if (size == 0) { return 1; } else { return 0; } } public int front(){ if(size == 0){ return -1; } return deque[front + 1]; } public int back(){ if(size == 0){ return -1; } return deque[rear]; } } public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); CustomDeque deque = new CustomDeque(); StringTokenizer st; StringBuilder sb = new StringBuilder(); for(int i = 0 ; i < n; i++){ st = new StringTokenizer(br.readLine()); String str = st.nextToken(); switch (str) { case "push_front": int j = Integer.parseInt(st.nextToken()); deque.pushFront(j); break; case "push_back": int k = Integer.parseInt(st.nextToken()); deque.pushRear(k); break; case "pop_front": int i1 = deque.popFront(); sb.append(i1).append("\n"); break; case "pop_back": int i2 = deque.popBack(); sb.append(i2).append("\n"); break; case "size": int size = deque.size(); sb.append(size).append("\n"); break; case "empty": int empty = deque.empty(); sb.append(empty).append("\n"); break; case "front": int front = deque.front(); sb.append(front).append("\n"); break; case "back": int back = deque.back(); sb.append(back).append("\n"); break; default: break; } } System.out.println(sb); } }
'PS' 카테고리의 다른 글
Java 10870 피보나치 수 5 (0) 2023.05.04 Java 17413 단어 뒤집기2 (0) 2023.05.04 Java 9095 1, 2, 3 더하기 (0) 2023.05.04 Java 10773 제로 (0) 2023.05.02 Java 2164 카드2 (0) 2023.05.02