[Java] 백준(Baekjoon) 28279. 덱2
2024. 1. 30. 11:17ㆍAlgorithm/자료구조
https://www.acmicpc.net/problem/28279
28279번: 덱 2
첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.
www.acmicpc.net


풀이
package dataStructure;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Ex28279 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
int n= Integer.parseInt(br.readLine());
Deque<Integer> deque= new ArrayDeque<>();
StringBuilder sb= new StringBuilder();
for(int i=0;i<n;i++) {
String s= br.readLine();
if(s.length()>1) {
//명령 1 or 2
StringTokenizer st= new StringTokenizer(s);
int order= Integer.parseInt(st.nextToken());
int su= Integer.parseInt(st.nextToken());
if(order==1) {
deque.offerFirst(su);
}else if(order==2) {
deque.offerLast(su);
}
}else {
int order= Integer.parseInt(s);
if(order==3) {
if(deque.isEmpty())
sb.append("-1\n");
else
sb.append(deque.pollFirst()+"\n");
}else if(order==4) {
if(deque.isEmpty())
sb.append("-1\n");
else
sb.append(deque.pollLast()+"\n");
}else if(order==5) {
sb.append(deque.size()+"\n");
}else if(order==6) {
if(deque.isEmpty())
sb.append("1\n");
else
sb.append("0\n");
}else if(order==7) {
if(deque.isEmpty())
sb.append("-1\n");
else
sb.append(deque.peekFirst()+"\n");
}else if(order==8) {
if(deque.isEmpty())
sb.append("-1\n");
else
sb.append(deque.peekLast()+"\n");
}
}
}
System.out.println(sb.toString());
}
}
- Deque 인터페이스 사용
참고:
https://soft.plusblog.co.kr/24
[Java(자바)] Deque(덱/데크) 자료구조
카프카의 소스코드를 보던 중 내부에서 Deque 클래스를 사용한 부분을 보게 되었다. Deque(덱 혹은 데크)은 Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료
soft.plusblog.co.kr
'Algorithm > 자료구조' 카테고리의 다른 글
[Java] 백준(Baekjoon) 12789. 도키도키 간식드리미 (2) | 2024.01.30 |
---|---|
[Java] 백준(Baekjoon) 28278. 스택2 (0) | 2024.01.29 |
[Java] 백준(Baekjoon) 1620. 나는야 포켓몬 마스터 이다솜 (2) | 2024.01.29 |
[Java] 백준(Baekjoon) 10815. 숫자카드 (0) | 2024.01.26 |
[Java] 백준(Baekjoon) 11279. 최대 힙 (0) | 2024.01.26 |