Memo
로직 설명
•
front = 배열의 맨 앞 부분, end = 배열의 맨 뒷 부분
•
front와 end를 적절히 이동시켜 STL Queue처럼 동작하도록 했습니다.
•
end는 queue의 마지막 원소 다음 부분을 가리키도록 합니다. (빈 원소를 표현하기 위함)
자료 구조
•
배열을 통한 큐 구현
코드 설명
bool is_empty(int a, int b)
{
return a == b;
}
C++
복사
•
front와 back이 같으면 1을 리턴, 다르면 0을 리턴 합니다.
if (op == "push")
{
std::cin >> val;
queue[back++] = val;
}
C++
복사
•
PUSH 작업을 위해 넣을 값을 우선 받습니다.
•
큐 뒷 부분에 새로운 값이 들어옵니다. back은 하나 증가시켜 다음 값을 받을 준비를 합니다.
Code
제출 날짜
@4/16/2021
메모리
2060 KB
시간
0 ms
#include <iostream>
#define endl "\n"
int N;
int queue[10002];
std::string op;
void io_faster()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
io_faster();
std::cin >> N;
}
bool is_empty(int a, int b)
{
return a == b;
}
void solve()
{
int front = 0, back = 0, val;
while (N--)
{
std::cin >> op;
if (op == "push")
{
std::cin >> val;
queue[back++] = val;
}
else if (op == "front")
{
if (is_empty(front, back))
std::cout << -1 << endl;
else
std::cout << queue[front] << endl;
}
else if (op == "back")
{
if (is_empty(front, back))
std::cout << -1 << endl;
else
std::cout << queue[back - 1] << endl;
}
else if (op == "size")
std::cout << back - front << endl;
else if (op == "pop")
{
if (is_empty(front, back))
std::cout << -1 << endl;
else
std::cout << queue[front++] << endl;
}
else if (op == "empty")
std::cout << is_empty(front, back) << endl;
}
}
int main()
{
input();
solve();
return (0);
}
C++
복사