
라우터 내부에 존재하는 버퍼의 크기 N을 입력받은 후 라우터가 처리해야할 정보를 하나씩 입력받는다. 양의 정수는 패킷이 입력으로 들어왔다는 것을 의미하고, 0은 라우터가 패킷을 하나 처리했다는 것을 의미한다. 그리고 버퍼가 비어있을때는 0이 입력으로 들어오지 않는다. -1은 입력의 끝을 나타낸다.
queue(큐)
- while문으로 반복하며 정보를 입력받는다.
- -1이면 break 한다.
- 버퍼가 비어있지 않을 때 0을 입력받으면 q.pop()으로 패킷을 하나 처리한다.
- 양수를 입력받았을때
3-1 버퍼가꽉차있으면 정보를 저장할 수 없으므로 continue해준다.
3-2 버퍼의 자리가 남아있으면 p.push(info)로 정보를 저장해준다.- -1을 입력받은 후 큐(버퍼)안의 정보를 전부 출력한다.
//boj15828번_Router_큐
#include<iostream>
#include<queue>
using namespace std;
int main() {
int N;
cin >> N;
queue<int> q;
while (true) {
int info;
cin >> info;
if (info == -1) {
break;
}
if (!q.empty() && info == 0) {
q.pop();
}
if (info > 0) {
if (q.size() >= N) {
continue;
}
else {
q.push(info);
}
}
}
if (q.empty()) {
cout << "empty";
}
else {
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
}
return 0;
}