반응형
https://www.acmicpc.net/problem/10866
[ 코드 ]
#include <iostream>
#include <string>
#include <deque>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
deque <int> dq;
for(int i=0; i<n; i++){
string temp;
cin >> temp;
int num;
if(temp == "push_back"){
cin >> num;
dq.push_back(num);
}
else if(temp == "push_front"){
cin >> num;
dq.push_front(num);
}
else if(temp == "pop_front"){
if(dq.empty()){
cout << -1 << endl;
}
else{
cout << dq.front() << endl;
dq.pop_front();
}
}
else if (temp == "pop_back"){
if (dq.empty()){
cout << -1 << endl;
}
else{
cout << dq.back() << endl;
dq.pop_back();
}
}
else if (temp == "size"){
cout << dq.size() << endl;
}
else if (temp == "empty"){
if (dq.empty()){
cout << 1 << endl;
}
else
cout << 0 << endl;
}
else if (temp == "front"){
if (dq.empty())
cout << -1 << endl;
else
cout << dq.front() << endl;
}
else if (temp == "back"){
if (dq.empty())
cout << -1 << endl;
else
cout << dq.back() << endl;
}
}
return 0;
}
c++의 stl deque을 이용한 문제.
Deque이란?
사진 출처 : https://iq.opengenus.org/deque-in-cpp-stl/
양쪽에서 모두 입력과 출력이 가능한 자유도가 스택과 큐에비해서 높은 자료구조.
여기서 눈여겨 볼 것은 main 함수 다음에 바로 오는
ios_base::sync_with_stdio(0);
cin.tie(0);
이 부분이다.
이 말은
C 표준 스트림과 C++ 표준 스트림 간의 동기화를 비활성화한다는 뜻이다.
단점 : C 및 C++ 스타일 I/O를 혼합하여 쓰는 것이 불가능해진다.
장점 : 다른 스레드의 출력이 인터리브 될 수 있지만 데이터 경쟁이 발생하지 않으므로 스레드로부터 안전하다.
동기화를 끊으면 사용하는 버퍼의 수가 줄어들기 때문에 실행속도 자체는 향상된다.
더 자세한 것은 다음 포스트에서 다뤄보도록 하겠다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 2578번 : 빙고 / java (0) | 2020.09.24 |
---|---|
[백준] 2309번 : 일곱 난쟁이 / java (0) | 2020.09.23 |
[백준] 1436번 : 영화감독 숌 / c++14 (0) | 2020.05.27 |
[백준] 2798번 : 블랙잭 / c++ (0) | 2020.05.27 |
[백준] 1966번 : 프린터 큐 / c++ (0) | 2020.05.25 |