티스토리 뷰
728x90
https://www.acmicpc.net/problem/10866
큐, 덱 Java
덱 사용 이해 문제
접근방법
자바에서 ArrayDeque 사용하기
덱의 개념을 익히고 실습하는 문제. (입력 크기가 너무 작아서 비효율적인 구현으로도 통과가 되지만, 가급적이면 연산 당 시간 복잡도가 O(1)이도록 구현해 주세요.) |
문제 설명에 이렇게 적혀있어서 덱 구현해서 풀어야 하나 했지만. 모든연산이 O(1)이긴 한걸요.
소스코드
import java.io.*;
import java.util.ArrayDeque;
public class Q10866 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
ArrayDeque deque = new ArrayDeque();
for(int i = 0 ; i < n ; i++){
String[] s = br.readLine().split(" ");
String instruction = s[0];
int element = 0;
if(s.length > 1){
element = Integer.parseInt(s[1]);
}
switch (instruction) {
case "push_front" :
deque.addFirst(element);
break;
case "push_back" :
deque.add(element);
break;
case "pop_front" :
Object popf = deque.pollFirst();
if(popf == null){
bw.write("-1\n");
}else{
bw.write(popf.toString()+"\n");
}
break;
case "pop_back" :
Object popb = deque.pollLast();
if(popb == null){
bw.write("-1\n");
}else{
bw.write(popb.toString()+"\n");
}
break;
case "size" :
bw.write(deque.size()+"\n");
break;
case "empty" :
if(deque.isEmpty()){
bw.write("1\n");
}else{
bw.write("0\n");
}
break;
case "front" :
if(deque.peekFirst() == null){
bw.write("-1\n");
}else{
bw.write(deque.peekFirst().toString()+"\n");
}
break;
case "back":
if(deque.peekLast() == null){
bw.write("-1\n");
}else{
bw.write(deque.peekLast().toString()+"\n");
}
}
}
br.close();
bw.close();
}
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[백준 1806] 알고리즘 105일차 : 부분합 (0) | 2021.07.19 |
---|---|
[백준 1655] 알고리즘 104일차 : 가운데를 말해요 (0) | 2021.07.12 |
[백준 12015] 알고리즘 102일차 : 가장 긴 증가하는 부분 수열 2 (0) | 2021.07.08 |
[백준 17298] 알고리즘 101일차 : 오큰수 (0) | 2021.07.07 |
[백준 5430] 알고리즘 10^2일차 : AC (0) | 2021.07.06 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- 가장 큰 수 프로그래머스
- 백트래킹
- 토마토
- 브루트포스
- dp
- 다이나믹프로그래밍
- 동적계획법
- 프로그래머스
- 트리
- 최대힙
- 파이썬
- 알고리즘
- 수학
- dfs
- 정렬
- 게임이론
- 최단경로
- c++
- Swift
- 웹크롤링
- 최소힙
- 자바
- 이분탐색
- 그리디알고리즘
- BFS
- 가장 큰 수 Swift
- 투포인터
- 스택
- 우선순위큐
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함