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할 때 뒤쪽의 배열들이 전체적으로 이동)이 들어가야 될 듯하다
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 1436] 영화감독 숌 (0) | 2025.01.08 |
---|---|
[C++][백준 11866] 요세푸스 문제 0 (0) | 2025.01.08 |
[C++][백준 10828] 스택 (0) | 2025.01.08 |
[C++][백준 10816] 숫자 카드2 (0) | 2025.01.07 |
[C++][백준 9012] 괄호 (0) | 2025.01.07 |