반응형
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
https://www.acmicpc.net/problem/18258
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
풀이
큐는 기본기본기본 문제라 정말 쉽게 풀 수 있을 듯합니다. STL을 사용하지 않아도 배열로 구현하여도 구현이 간단합니다.
큐2 문제를 봤을 때 정말 처음에는 원형 큐를 의도한 것인가 생각하였지만
아무리 생각해도 주어진 범위에서 시간 복잡도와 공간 복잡도를 초과하지 않을 것 같다는 생각을 하여서 그냥 제출하였더니 결과는 통과였습니다.
다른 분들의 블로그를 참고하니 C++에서 입/출력의 시간을 줄여주는
ios::sync_with_stdio(0); cin.tie(0);
을 사용하지 않아 입력과 출력에서도 시간이 소비되어 시간 초과가 나거나 개행 문자를 사용하지 않고 endl을 사용하여
시간초과가 나는 경우가 있었습니다!
바킹독 강좌로 공부하는 저는 그럴 일이 없었습니다. 우하하
정답 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int N;
cin >> N;
queue<int> q;
while (N--) {
string s;
cin >> s;
if (s == "push") {
int num;
cin >> num;
q.push(num);
}
if (s == "pop") {
if (q.empty())
cout << -1 << '\n';
else {
cout << q.front() << '\n'; q.pop();
}}
if (s == "size") {
cout << q.size() << '\n';
}
if (s == "empty") {
cout << (q.empty() ? 1 : 0) << '\n';
}
if (s == "front") {
if (q.empty())cout << -1 << '\n';
else {
cout << q.front() << '\n';
}}
if (s == "back") {
if (q.empty())cout << -1 << '\n';
else {
cout << q.back() << '\n';
}}
}
}
반응형
'Baekjoon' 카테고리의 다른 글
[C++] 1021번 : 회전하는 큐 (0) | 2024.03.08 |
---|---|
[C++] 2164번: 카드2 (0) | 2024.03.07 |
[C++] 2493번 : 탑 (0) | 2024.03.05 |
[C++] 1874번 : 스택 수열 (2) | 2024.03.05 |
[C++] 10773번 : 제로 (0) | 2024.03.03 |