Baekjoon 10866 (덱)
Baekjoon 10866, 백준 10866 문제의 본인 풀이입니다!
문제는 아래의 링크에서 확인할 수 있습니다.
문제보기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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using namespace std;
int* arr = new int[100010];
int start = 5000;
int last = 5001;
void deque_func(string s) {
int num = 0;
if(s == "push_front") {
cin >> num;
arr[start] = num;
start--;
}
else if(s == "push_back") {
cin >> num;
arr[last] = num;
last++;
}
else if(s == "pop_front") {
if(last - start == 1) cout << -1 << '\n';
else {
cout << arr[start + 1] << '\n';
start++;
}
}
else if(s == "pop_back") {
if(last - start == 1) cout << -1 << '\n';
else {
cout << arr[last - 1] << '\n';
last--;
}
}
else if(s == "size") {
cout << last - start - 1 << '\n';
}
else if(s == "empty") {
if(last - start == 1) cout << 1 << '\n';
else cout << 0 << '\n';
}
else if(s == "front"){
if(last - start == 1) cout << -1 << '\n';
else cout << arr[start + 1] << '\n';
}
else if(s == "back"){
if(last - start == 1) cout << -1 << '\n';
else cout << arr[last - 1] << '\n';
}
}
int main() {
int N;
cin >> N;
while(N--){
string input_s;
cin >> input_s;
deque_func(input_s);
}
delete[] arr;
}
앞의 Queue와 마찬가지로 STL을 사용하지 않고 배열을 이용하여 생 구현했다.
Queue와 같이 start와 last 변수를 사용하였는데,
Deque의 경우에는 앞쪽으로도 데이터가 입력될 수 있어서 start과 last 값을 중앙(5000 부근)으로 두었다.
Baekjoon 10866 (덱)
http://yxxshin.github.io/2020/07/15/2020-07-15-Baekjoon-10866/