Programing/백준, 프로그래머스(C++)
[C++][백준 10845] 큐
hye3193
2025. 1. 8. 14:13
https://www.acmicpc.net/problem/10845
제출 코드
#include <iostream>
using namespace std;
class Queue
{
private:
int *p_queue;
int f, b;
public:
Queue(int n)
{
p_queue = new int[n];
f = -1;
b = -1;
}
void push(int x)
{
p_queue[++b] = x;
}
int pop()
{
return (b - f) ? p_queue[++f] : -1;
}
int size()
{
return (b - f);
}
int empty()
{
return (b - f) ? 0 : 1;
}
int front()
{
return (b - f) ? p_queue[f + 1] : -1;
}
int back()
{
return (b - f) ? p_queue[b] : -1;
}
};
int
main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, input;
string str;
cin >> n;
Queue queue(n);
while(n--)
{
cin >> str;
if (str == "push")
{
cin >> input;
queue.push(input);
}
else if (str == "pop")
cout << queue.pop() << '\n';
else if (str == "size")
cout << queue.size() << '\n';
else if (str == "empty")
cout << queue.empty() << '\n';
else if (str == "front")
cout << queue.front() << '\n';
else if (str == "back")
cout << queue.back() << '\n';
}
}
queue 클래스를 사용해 코드를 작성하였다
문제의 특성상 그냥 f(front cursor)와 b(back cursor)를 무한정 증가시키는 방식으로 구현했는데, 실제로 큐를 구현하기 위해서는 배열의 요소를 전체적으로 이동시키는 과정(push할 때 뒤쪽의 배열들이 전체적으로 이동)이 들어가야 될 듯하다