10845번 - 큐
2022. 6. 6. 12:23ㆍ백준/C++
문제
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
2022.04.23 - [C++/자료구조] - 큐(Queue)
#include <iostream>
using namespace std;
class Queue {
public:
Queue(): head(0), tail(-1), arraySize(0) {}
~Queue() {
head = 0;
tail = -1;
arraySize = 0;
}
void excute(string command) {
if(command == "push"){
push();
} else if(command == "pop") {
cout << pop() << "\n";
} else if(command == "size") {
cout << size() << "\n";
} else if(command == "empty") {
cout << isEmpty() << "\n";
} else if(command == "front") {
cout << front() << "\n";
} else if(command == "back") {
cout << back() << "\n";
}
}
private:
void push() {
int element;
cin>>element;
arraySize++;
array[++tail] = element;
}
int pop() {
if(isEmpty() == 1) {
return -1;
}
arraySize--;
return array[head++];
}
int size() {return arraySize;}
int isEmpty() {return arraySize==0?1:0;}
int front()
{
return isEmpty()==1 ? -1 : array[head];
}
int back()
{
return isEmpty()==1 ? -1 : array[tail];
}
private:
int array[10000];
int head, tail;
int arraySize;
};
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int repeat;
cin>>repeat;
Queue q;
while(repeat--) {
string command;
cin>>command;
q.excute(command);
}
return 0;
}
'백준 > C++' 카테고리의 다른 글
1059번 - 좋은구간 (0) | 2022.05.04 |
---|---|
1037번 - 약수 (0) | 2022.05.04 |
1010번 - 다리 놓기 (0) | 2022.05.04 |
2798번 - 블랙잭 (0) | 2022.05.04 |
10870번 - 피보나치 수 5 (0) | 2022.05.01 |