ALGORITHM
[JAVA] 백준 18258번- 큐2
연듀
2022. 7. 18. 10:09
https://www.acmicpc.net/problem/18258
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
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 br=new BufferedReader(new InputStreamReader(System.in));
Deque<Integer> q=new LinkedList<>();
int n=Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(n-- > 0){
StringTokenizer st=new StringTokenizer(br.readLine());
String str=st.nextToken();
switch(str){
case "push":
q.offer(Integer.parseInt(st.nextToken()));
break;
case "pop":
if(q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.poll()).append("\n");
break;
case "size":
sb.append(q.size()).append("\n");
break;
case "empty":
if(q.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
break;
case "front":
if(q.isEmpty())sb.append(-1).append("\n");
else sb.append(q.peek()).append("\n");
break;
case "back":
if(q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.peekLast()).append("\n");
break;
}
}
System.out.println(sb);
}
}
큐에 양쪽에 데이터를 넣고 뺄수 있는 자료구조인 덱을 사용한다.
반응형