※주의※
저의 풀이가 정답은 아닙니다.
다른 코드가 더 효율적이거나 좋을 수 있습니다.
언제나 다른 사람의 코드는 참고만 하시기 바랍니다.
[문제 풀이 사이트]
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
[문제 설명]
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
push X: 정수 X를 큐에 넣는 연산이다.
pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 큐에 들어있는 정수의 개수를 출력한다.
empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
[입력]
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.
주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
[출력]
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
[문제 풀이]
큐에 대한 내용을 잊지 않기 위해 이번주 문제로 선정했다.
풀이법은 문제 설명대로 차례대로 풀면되고 STL에서 제공하는 큐를 사용했다.
필자의 경우 큐가 비었을 때, 큐가 비어있지 않을 때로 나누어서 풀었다.
[C++ 큐] Queue 기본 사용법
C++의 STL에서 사용하는 Queue(큐)의 기본 사용법에 대해 알아보려고 합니다. 목차 Queue(큐) 란? Queue(큐)의 기본 사용법 1. Queue(큐) 란? Queue(큐)는 먼저 집어넣은 데이터가 먼저 나오는 구조(First In Firs.
park-peanut.tistory.com
[최종 코드]
[GitHub]
GitHub - SmallPeanutPark/BAEKJOON: Study BaekJoon for Coding Test
Study BaekJoon for Coding Test. Contribute to SmallPeanutPark/BAEKJOON development by creating an account on GitHub.
github.com
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
queue<int> q;
int N;
cin >> N;
for(int i = 0; i < N; ++i) {
string command;
cin >> command;
if(!q.empty()) {
// 큐가 비어있지 않을 때
if(command.compare("push") == 0) {
// 정수 X를 큐에 넣는 연산이다.
int X;
cin >> X;
q.push(X);
} else if(command.compare("front") == 0) {
// 큐가 비어있지 않다면 큐의 가장 앞에 있는 정수를 출력한다.
cout << q.front() << '\n';
} else if(command.compare("back") == 0) {
// 큐가 비어있지 않다면 큐의 가장 뒤에 있는 정수를 출력한다.
cout << q.back() << '\n';
} else if(command.compare("size") == 0) {
// 큐에 들어있는 정수의 개수를 출력한다.
cout << q.size() << '\n';
} else if(command.compare("empty") == 0) {
//큐가 비어있지 않다면 0을 출력한다.
cout << q.empty() << '\n';
} else if(command.compare("pop") == 0) {
// 큐에서 가장 앞의 정수를 빼고, 그 수를 출력한다.
cout << q.front() << '\n';
q.pop();
} else {
// nothing
}
} else {
// 큐가 비어있을 때
if(command.compare("push") == 0) {
// 정수 X를 큐에 넣는 연산이다.
int X;
cin >> X;
q.push(X);
} else if(command.compare("front") == 0) {
// 큐가 비어있다면 -1을 출력한다.
cout << -1 << '\n';
} else if(command.compare("back") == 0) {
// 큐가 비어있다면 -1을 출력한다.
cout << -1 << '\n';
} else if(command.compare("pop") == 0) {
// 큐가 비어있다면 -1을 출력한다.
cout << -1 << '\n';
} else if(command.compare("size") == 0) {
// 큐에 들어있는 정수의 개수를 출력한다.
cout << q.size() << '\n';
} else if(command.compare("empty") == 0) {
// 큐가 비어있으면 0을 출력한다.
cout << q.empty() << '\n';
} else {
// nothing
}
}
}
}
'PS > BaekJoon' 카테고리의 다른 글
[BaekJoon 1463번] 1로 만들기(C++) (0) | 2022.07.26 |
---|---|
[BaekJoon 1850번] 최대공약수(C++) (0) | 2022.07.20 |
[BaekJoon 5397번] 키로거(C++) (0) | 2022.07.18 |
[BaekJoon 10773번] 제로(C++) (0) | 2022.07.10 |
[BaekJoon 2309번] 일곱 난쟁이(C++) (0) | 2022.07.07 |
댓글