Skip to content

Commit bbbde76

Browse files
committed
[Silver IV] Title: 덱 2, Time: 1380 ms, Memory: 256368 KB -BaekjoonHub
1 parent 4f3790d commit bbbde76

2 files changed

Lines changed: 124 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# [Silver IV] 덱 2 - 28279
2+
3+
[문제 링크](https://www.acmicpc.net/problem/28279)
4+
5+
### 성능 요약
6+
7+
메모리: 256368 KB, 시간: 1380 ms
8+
9+
### 분류
10+
11+
자료 구조, 덱
12+
13+
### 제출 일자
14+
15+
2023년 8월 23일 23:47:57
16+
17+
### 문제 설명
18+
19+
<p>정수를 저장하는 덱을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.</p>
20+
21+
<p>명령은 총 여덟 가지이다.</p>
22+
23+
<ol>
24+
<li><span style="color:#e74c3c;"><code>1 X</code></span>: 정수 <var>X</var>를 덱의 앞에 넣는다. (1 ≤ <var>X</var> ≤ 100,000)</li>
25+
<li><span style="color:#e74c3c;"><code>2 X</code></span>: 정수 <var>X</var>를 덱의 뒤에 넣는다. (1 ≤ <var>X</var> ≤ 100,000)</li>
26+
<li><span style="color:#e74c3c;"><code>3</code></span>: 덱에 정수가 있다면 맨 앞의 정수를 빼고 출력한다. 없다면 <span style="color:#e74c3c;"><code>-1</code></span>을 대신 출력한다.</li>
27+
<li><span style="color:#e74c3c;"><code>4</code></span>: 덱에 정수가 있다면 맨 뒤의 정수를 빼고 출력한다. 없다면 <span style="color:#e74c3c;"><code>-1</code></span>을 대신 출력한다.</li>
28+
<li><span style="color:#e74c3c;"><code>5</code></span>: 덱에 들어있는 정수의 개수를 출력한다.</li>
29+
<li><span style="color:#e74c3c;"><code>6</code></span>: 덱이 비어있으면 <span style="color:#e74c3c;"><code>1</code></span>, 아니면 <span style="color:#e74c3c;"><code>0</code></span>을 출력한다.</li>
30+
<li><span style="color:#e74c3c;"><code>7</code></span>: 덱에 정수가 있다면 맨 앞의 정수를 출력한다. 없다면 <span style="color:#e74c3c;"><code>-1</code></span>을 대신 출력한다.</li>
31+
<li><span style="color:#e74c3c;"><code>8</code></span>: 덱에 정수가 있다면 맨 뒤의 정수를 출력한다. 없다면 <span style="color:#e74c3c;"><code>-1</code></span>을 대신 출력한다.</li>
32+
</ol>
33+
34+
### 입력
35+
36+
<p>첫째 줄에 명령의 수 <var>N</var>이 주어진다. (1 ≤ <var>N</var> ≤ 1,000,000)</p>
37+
38+
<p>둘째 줄부터 <var>N</var>개 줄에 명령이 하나씩 주어진다.</p>
39+
40+
<p>출력을 요구하는 명령은 하나 이상 주어진다.</p>
41+
42+
### 출력
43+
44+
<p>출력을 요구하는 명령이 주어질 때마다 명령의 결과를 한 줄에 하나씩 출력한다.</p>
45+
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
3+
4+
import java.io.BufferedReader;
5+
import java.io.BufferedWriter;
6+
import java.io.IOException;
7+
import java.io.InputStreamReader;
8+
import java.io.OutputStreamWriter;
9+
import java.nio.charset.Charset;
10+
import java.util.Collection;
11+
import java.util.Deque;
12+
import java.util.Iterator;
13+
import java.util.LinkedList;
14+
import java.util.Queue;
15+
import java.util.Stack;
16+
import java.util.StringJoiner;
17+
import java.util.StringTokenizer;
18+
19+
public class Main {
20+
public static void main(String[] args)throws IOException {
21+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
22+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
23+
int cnt = Integer.parseInt(br.readLine());
24+
Deque <Integer> deque = new LinkedList<>();
25+
StringTokenizer st;
26+
for (int i = 0; i <cnt ; i++) {
27+
st = new StringTokenizer(br.readLine());
28+
int key = Integer.parseInt(st.nextToken());
29+
switch (key){
30+
case 1:
31+
deque.addFirst(Integer.parseInt(st.nextToken()));
32+
break;
33+
case 2:
34+
deque.addLast(Integer.parseInt(st.nextToken()));
35+
break;
36+
case 3:
37+
if (deque.size()!=0){
38+
bw.write(deque.pollFirst()+"\n");
39+
}else {
40+
bw.write(-1+"\n");
41+
}
42+
break;
43+
case 4:
44+
if (deque.size()!=0){
45+
bw.write(deque.pollLast()+"\n");
46+
}else {
47+
bw.write(-1+"\n");
48+
}
49+
break;
50+
case 5:
51+
bw.write(deque.size()+"\n");
52+
break;
53+
case 6:
54+
if (deque.isEmpty()){
55+
bw.write(1+"\n");
56+
}else {
57+
bw.write(0+"\n");
58+
}
59+
break;
60+
case 7:
61+
if (!deque.isEmpty()){
62+
bw.write(deque.peekFirst()+"\n");
63+
}else {
64+
bw.write(-1+"\n");
65+
}
66+
break;
67+
case 8:
68+
if (!deque.isEmpty()){
69+
bw.write(deque.peekLast()+"\n");
70+
}else {
71+
bw.write(-1+"\n");
72+
}
73+
break;
74+
}
75+
76+
}
77+
bw.flush();
78+
}
79+
}

0 commit comments

Comments
 (0)