문제
풀이
이전에 풀었던 스택 기본 문제들과 동일한 유형이므로, 똑같이 입력을 받고 switch문으로 케이스를 나누어 풀이하면 된다.
큐를 별도로 구현하지 않고 JDK에서 제공하는 기본 라이브러리를 사용했다. (큐 직접 구현은 이곳을 참고)
이전 큐 문제에서는 back을 구현할 때 num을 출력하는 것으로 해결했는데, 이번에는 덱을 사용해 peekLast() 메소드로 풀이했다.
StringBuilder를 사용하지 않으면 시간 초과 에러가 떠서 사용해 주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
Deque<Integer> deque=new LinkedList<>();
StringBuilder sb=new StringBuilder();
StringTokenizer st;
int N=Integer.parseInt(in.readLine());
for(int i=0; i<N; i++) {
st=new StringTokenizer(in.readLine());
String cmd=st.nextToken();
switch(cmd) {
case "push":
int num=Integer.parseInt(st.nextToken());
deque.addLast(num);
break;
case "pop":
if(deque.isEmpty())
sb.append(-1).append("\n");
else
sb.append(deque.pollFirst()).append("\n");
break;
case "size":
sb.append(deque.size()).append("\n");
break;
case "empty":
if(deque.isEmpty())
sb.append(1).append("\n");
else
sb.append(0).append("\n");
break;
case "front":
if(deque.isEmpty())
sb.append(-1).append("\n");
else
sb.append(deque.peekFirst()).append("\n");
break;
case "back":
if(deque.isEmpty())
sb.append(-1).append("\n");
else
sb.append(deque.peekLast()).append("\n");
break;
default:
break;
}
}
System.out.print(sb);
}
}
'백준' 카테고리의 다른 글
백준 11866: 요세푸스 문제 0(java) (0) | 2024.07.16 |
---|---|
백준 2164: 카드 2(java) (0) | 2024.07.16 |
백준 12789: 도키도키 간식드리미(java) (0) | 2024.07.15 |
백준 10845: 큐(java) (0) | 2024.07.14 |
백준 4949: 균형잡힌 세상(java) (0) | 2024.07.12 |