https://www.acmicpc.net/problem/18258

[필자 사고]
큐 자료구조 내장함수를 이용하면 문제에서 요구하는 대로 쉽게 구현할 수 있다.
아래는 자세한 코드 해설이다.
[코드 해설]
main 함수
- 프로그램의 시작점.
- 빠른 입출력을 위해 ios::sync_with_stdio(false), cin.tie(0), cout.tie(0) 설정.
- 입력으로 명령 개수 N을 받음.
- queue<int> myQueue를 생성하여 정수 큐를 준비.
명령어 처리 (while (N--))
- 입력받은 N번만큼 반복하여 명령어를 처리.
- 문자열 str에 명령어를 입력받음.
- 명령어 종류에 따라 다음과 같이 실행됨:
1. "push"
- 정수 num을 입력받아 myQueue.push(num)으로 큐의 뒤에 추가.
2. "pop"
- 큐가 비어 있으면 -1 출력.
- 비어 있지 않으면 front() 값을 출력하고, pop()으로 제거.
3. "size"
- 현재 큐의 원소 개수를 size()로 출력.
4. "empty"
- 큐가 비어 있으면 1, 아니면 0을 출력.
5. "front"
- 큐가 비어 있으면 -1, 아니면 front() 값을 출력.
6. "back"
- 큐가 비어 있으면 -1, 아니면 back() 값을 출력.
[소스 코드]
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int N;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> N;
queue<int> myQueue;
while (N--) {
string str;
cin >> str;
if (str == "push") {
int num;
cin >> num;
myQueue.push(num);
}
else if (str == "pop") {
if (myQueue.empty()) {
cout << -1 << "\n";
}
else {
int nowNum = myQueue.front();
myQueue.pop();
cout << nowNum << "\n";
}
}
else if (str == "size") {
cout << myQueue.size() << "\n";
}
else if (str == "empty") {
if (myQueue.empty()) {
cout << 1 << "\n";
}
else {
cout << 0<< "\n";
}
}
else if (str == "front") {
if (myQueue.empty()) {
cout << -1 << "\n";
}
else {
cout << myQueue.front() << "\n";
}
}
else if (str == "back") {
if (myQueue.empty()) {
cout << -1 << "\n";
}
else {
cout << myQueue.back() << "\n";
}
}
}
}'백준 > 구현' 카테고리의 다른 글
| 백준 1244 c++ "스위치 켜고 끄기" -PlusUltraCode- (0) | 2025.09.17 |
|---|---|
| 백준 17219 c++ "비밀번호 찾기" -PlusUltraCode- (0) | 2025.09.17 |
| 백준 1475 c++ "방 번호" -PlusUltraCode- (0) | 2025.09.14 |
| 백준 25206 c++ "너의 평점은" -PlusUltraCode- (0) | 2025.09.14 |
| 백준 15653 c++ "구슬 탈출 4" -PlusUltraCode- (4) | 2025.08.27 |