반응형
https://www.acmicpc.net/problem/18258
- 문제
해설
pop, front, back, top 명렁 처리 시 비어있는 지 체크 해주는 것에 유의해야 한다.
아래 코드는 c++의 실행 속도와 입출력 속도를 향상 시켜준다.
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
ios_base :: sync_with_stdio(false);
c의 stdio와 c++의 iostream의 동기화를 비활성화 하므로
동일한 버퍼 사용으로 인한 성능 저하를 발생 시키지 않는다.
cin.tie(null)
묶여져 있는 cin, cout를 풀어줍니다
cout << "Hello World! \n";
cin >> variable;
일반적으로 "Hello World!"가 반드시 출력된 후 variable을 입력 받을 수 있다.
cin.tie(null) 사용 시 "Hello World!" 출력 전에 variable을 입력 받을 수 있게 된다
즉 내부적으로 cin과 cout을 묶어주는 과정을 거치지 않기 때문에 시간이 절약 된다.
코드
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
queue<int> Q;
string command;
int t, cnt;
cin >> t;
for (int i = 0; i < t; i++) {
cin >> command;
if (command == "push") {
cin >> cnt;
Q.push(cnt);
}
else if (command== "pop") {
if (Q.empty()) {
cout << "-1" << '\n';
} else {
cout << Q.front() << '\n';
Q.pop();
}
}
else if (command == "front") {
if (Q.empty()) {
cout << "-1" << '\n';
}
else {
cout << Q.front() << '\n';
}
}
else if (command == "back") {
if (Q.empty()) {
cout << "-1" << '\n';
}
else {
cout << Q.back() << '\n';
}
}
else if (command == "size")
cout << Q.size() << '\n';
else if (command == "empty")
cout << Q.empty() << '\n';
else if (command == "top") {
if (Q.empty()) {
cout << "-1" << '\n';
}
else {
cout << Q.front() << '\n';
}
}
}
return 0;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 1021번 회전하는 큐 - c++ 풀이 (0) | 2023.04.26 |
---|---|
[BOJ/백준] 2164번 카드2 - c++ 풀이 (0) | 2023.04.10 |
[BOJ/백준] 5597번 과제 안 내신 분..? - [c/c++] 풀이 (0) | 2023.04.01 |
[BOJ/백준] 10813번 공 바꾸기 - [c/c++] 풀이 (0) | 2023.03.31 |
[BOJ/백준] 10810번 공 넣기 - [c/c++] 풀이 (0) | 2023.03.28 |
댓글