[백준] 10845 큐 (C++)
📄 문제 설명
Problem
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. - push X: 정수 X를 큐웨 넣는 연산 - pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력 (만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력) - size: 큐에 들어있는 정수의 개수를 출력 - empty: 큐가 비어있으면 1, 아니면 0을 출력 - front: 큐의 가장 앞에 있는 정수를 출력 (만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력) - back: 큐의 가장 뒤에 있는 정수를 출력 (만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력)
Input
첫째 줄 : 주어지는 명령의 수 N (1 ≤ N ≤ 10,000) 다음 N개 줄 : 명령과 필요시에 정수 (주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다.)
Output
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
Example Input 1
15 push 1 push 2 front back size empty pop pop pop size empty pop push 3 empty front
Example Output 1
1 2 2 0 1 2 -1 0 1 -1 0 3
📝 문제 해설
▶ Queue (큐)
한쪽에서 데이터를 넣고 다른 한쪽에서 데이터가 빠지는 자료구조. FIFO (First In First Out) 구조 : 가장 먼저 들어온 데이터가 가장 먼저 나간다.
Queue Reference
이 문제는 간단하게 STL Queue를 사용해 해결하면 된다. pop()과 front() back() 명령 수행시 stack이 비었는지 확인해주는 절차만 추가하면 쉽게 문제를 해결할 수 있다.
</> Source Code
#include <bits/stdc++.h> using namespace std; int main() { queue<int> q; int n; scanf("%d", &n); for (int i = 0; i < n; i++) { string s; cin >> s; if (s == "push") { int x; scanf("%d", &x); q.push(x); } else if (s == "pop") { int front = -1; if (!q.empty()) { front = q.front(); q.pop(); } printf("%d\n", front); } else if (s == "size") { printf("%d\n", q.size()); } else if (s == "empty") { int empty = 0; if (q.empty()) { empty = 1; } printf("%d\n", empty); } else if (s == "front") { int front = -1; if (!q.empty()) { front = q.front(); } printf("%d\n", front); } else if (s == "back") { int back = -1; if (!q.empty()) { back = q.back(); } printf("%d\n", back); } } return 0; }
Author And Source
이 문제에 관하여([백준] 10845 큐 (C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyez_dev/백준-10845-큐-C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)