728x90
SMALL
기본적인 구현 문제였다.
이런 문제는 c++의 stl인 queue를 사용해도 되지만,
자료구조 학습 기간이 길지 않은 초보자라면 직접 구현해보길 권장한다.
front 와 back을 증가시키기만 하는 linear queue를 구현해도
주어진 input이 배열의 범위를 넘어가지 않아서 circular queue가 필요하지 않은 것 같다.
circular queue는 modulo를 사용하면 된다.
https://www.acmicpc.net/problem/10845
SMALL
#include <iostream>
#include <algorithm>
using namespace std;
using ll = long long;
const int MAX = 100001;
int queue[MAX];
int front = 0;
int back = 0;
int n;
int size(); // pop()에서 size()함수 사용을 위한 선언
void push(int x) {
queue[back] = x;
back++;
}
void pop() {
if (size() == 0) { // 큐가 비어있다면
cout << "-1\n";
return;
}
cout << queue[front] << '\n';
front++;
}
int size() {
return back - front;
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
while (n--) {
string cmd;
cin >> cmd;
if (cmd == "push") {
int a;
cin >> a;
push(a);
}
else if (cmd == "pop") {
pop();
}
else if (cmd == "size") {
cout << size() << '\n';
}
else if (cmd == "empty") {
if (size() == 0) {
cout << "1\n";
}
else cout << "0\n";
}
else if (cmd == "front") {
if (size() == 0) { // 큐가 비어있다면
cout << "-1\n";
}
else cout << queue[front] <<'\n';
}
else { // back이 cmd일 때
if (size() == 0) {
cout << "-1\n";
}
else cout << queue[back-1] <<'\n';
}
}
return 0;
}
728x90
LIST
'PS > BOJ' 카테고리의 다른 글
백준 2583 (C++) 영역 구하기 (0) | 2021.11.27 |
---|---|
백준 9461 (C++) 파도반 수열 (0) | 2021.11.21 |
백준 17352 (C++) 여러분의 다리가 되어 드리겠습니다! (0) | 2021.11.10 |
백준 10409 (C++) 서버 (2) | 2021.11.07 |
백준 1516 (C++) 게임 개발 (2) | 2021.10.28 |