문제
문제파악
: 자료구조 'Queue'를 정확히 이해하고 해당 자료구조를 작성하고 요청하는 명령어를 작성할 수 있어야한다.
[명령어]
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
문제풀이
: 큐를 작성해주면 되지만, 큐는 제공하는 queue STL를 이용하겠다.
소스코드
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
queue<int> q;
int t, num;
string cmd;
cin >> t;
while (t--) {
cin >> cmd;
if (cmd == "push") {
cin >> num;
q.push(num);
}
else if (cmd == "pop") {
if (q.empty()) {
cout << "-1\n";
}
else {
cout << q.front() << "\n";
q.pop();
}
}
else if (cmd == "front") {
if(q.empty()){
cout << "-1\n";
}
else {
cout << q.front() << "\n";
}
}
else if (cmd == "back") {
if (q.empty()) {
cout << "-1\n";
}
else {
cout << q.back() << "\n";
}
}
else if (cmd == "size") {
cout << q.size() << "\n";
}
else if (cmd == "empty") {
cout << q.empty() << "\n";
}
}
return 0;
}
: 해당문제를 작성할때 시간초과를 주의해주어야한다. 일반적으로 입력과 출력이 많으니 다음 명령어를 tie와 sync를 해재해준다.
cout.tie(NULL);
cin.tie(NULL);
ios_base::sync_with_stdio(false);
: 추가로 개행문자 또한 endl보다는 '\n'을 이용하여 시간을 단축해주어야 시간초과 없이 통과가 가능하다.
'문제풀이' 카테고리의 다른 글
BaekJoon(2869)::달팽이는 올라가고 싶다 (0) | 2021.07.19 |
---|---|
BaekJoon(2292)::벌집 (0) | 2021.07.19 |
BaekJoon(2839)::설탕 배달 (0) | 2021.07.19 |
BaekJoon(2164)::카드2 (0) | 2021.07.19 |
BaekJoon(1037)::약수 (0) | 2021.07.18 |