https://www.acmicpc.net/problem/10845
아이디어:
1. STL queue의 사용법을 묻는 기본 문제
2. 큐가 비어있을 때의 예외처리
3. push 입력받고 int tmp; cin >> tmp; 처리하기
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
string str;
queue<int> Q;
cin >> n;
while (n--) {
cin >> str;
if (str == "push") {
int tmp;
cin >> tmp;
Q.push(tmp);
}
else if (str == "pop") {
if (!Q.empty()) {
cout << Q.front() << "\n";
Q.pop();
}
else cout << -1 << "\n";
}
else if (str == "size") {
cout << Q.size() << "\n";
}
else if (str == "empty") {
cout << Q.empty() << "\n";
}
else if (str == "front") {
if (!Q.empty()) cout << Q.front() << "\n";
else cout << -1 << "\n";
}
else if (str == "back") {
if (!Q.empty()) cout << Q.back() << "\n";
else cout << -1 << "\n";
}
}
return 0;
}
배열로 Queue 구현하고 STL 미사용
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n, s, e;
int q[2000005];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string str;
cin >> n;
while (n--) {
cin >> str;
if (str == "push")
cin >> q[e++];
else if (str == "pop")
cout << (s == e ? -1 : q[s++]) << "\n";
else if (str == "size")
cout << e - s << "\n";
else if (str == "empty")
cout << (s == e) << "\n";
else if (str == "front")
cout << (s == e ? -1 : q[s]) << "\n";
else if (str == "back")
cout << (s == e ? -1 : q[e-1]) << "\n";
}
return 0;
}
'algorithm' 카테고리의 다른 글
덱 (0) | 2025.03.30 |
---|---|
백준 2164번 카드2 (0) | 2025.03.29 |
큐 (0) | 2025.03.29 |
백준 6549번 히스토그램에서 가장 큰 직사각형 (0) | 2025.03.29 |
백준 3015번 오아시스 재결합 (0) | 2025.03.23 |