<< 문제 >>
https://www.acmicpc.net/problem/18258
간단히 큐를 구현하면 되는 문제입니다.
저는 배열, head, last 이 세가지를 이용해서 구현했습니다.
배열에 쭉 저장해두고
head와 last를 이동하며 Queue가 동작합니다.
제가 설명하기 보다는 이런거 참고하시면 쉬울것 같네요.
<< 코드 >>
#include <iostream>
#include <string>
using namespace std;
struct myQueue {
int* list = new int[2000001];
int head = 0;
int last = 0;
};
bool empty(myQueue &q) {
if (q.head == q.last) {
return true;
} else {
return false;
}
}
void push(myQueue &q, int num) {
q.list[q.last] = num;
q.last++;
}
int pop(myQueue &q) {
if (q.last == q.head) {
return -1;
}
int result = q.list[q.head];
q.head++;
return result;
}
int size(myQueue &q) {
return q.last - q.head;
}
int front(myQueue &q) {
if (empty(q)) {
return -1;
}
return q.list[q.head];
}
int back(myQueue &q) {
if (empty(q)) {
return -1;
}
return q.list[q.last - 1];
}
void task(myQueue &q, string str) {
if (str == "push") {
int num;
cin >> num;
push(q, num);
}
else if (str == "pop") {
cout << pop(q) << '\n';
}
else if (str == "size") {
cout << size(q) << '\n';
}
else if (str == "empty") {
cout << empty(q) << '\n';
}
else if (str == "front") {
cout << front(q) << '\n';
}
else if (str == "back") {
cout << back(q) << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int num;
cin >> num;
myQueue q;
for (int i = 0; i < num; i++) {
string input;
cin >> input;
task(q, input);
}
delete[] q.list;
}
< 백준 BaekJoon : 11866번 요세푸스 문제 0> C++ (0) | 2024.01.23 |
---|---|
< 백준 BaekJoon : 2164번 카드 2> C++ (0) | 2024.01.23 |
< 백준 BaekJoon : 12789번 도키도키 간식드리미> C++ (0) | 2024.01.23 |
< 백준 BaekJoon : 4949번 괄호> C++ (0) | 2024.01.22 |
< 백준 BaekJoon : 9012번 괄호> C++ (0) | 2024.01.22 |
댓글 영역