minimimi
[백준] 10845 큐 본문
반응형
문제출처] https://www.acmicpc.net/problem/10845
문제요약
정수를 저장하는 큐를 구현하는 문제입니다.
풀이
단계별로 문제풀기의 큐 단계 문제입니다. 큐를 직접 구현하여 문제를 해결할 수도 있지만 STL queue 라이브러리를 이용하여 문제를 풀어 볼 것입니다. 먼저 큐에 대해서 알아보겠습니다.
큐(Queue)란?
큐는 FIFO(First In First Out)으로 작동합니다. 즉, 먼저 들어온 데이터가 먼저 나갑니다.
그림과 같이 양쪽이 모두 뚫려있는 파이프 형태의 자료구조가 큐입니다. 큐도 스택과 마찮가지로 데이터가 차례차레 쌓이며 데이터를 빼낼때는 앞쪽부터 뺍니다. 참고적으로 컴퓨터의 기본적인 자료구조가 큐로 구성되어 있습니다.
STL 큐 라이브러리 사용법
1. 생성자
queue <데이터 형> 변수이름;
예시)
queue <int> int_q;
queue <string> str_q;
2. 멤버 함수
함수 | 반환형 | 매개변수 | 기능 |
push | void | 데이터 타입 | 큐에 원소를 추가 |
pop | 데이터 타입 | void | 큐에 원소를 삭제 |
front | 데이터 타입 | void | 큐 제일 앞에 있는 원소 반환 |
back | 데이터 타입 | void | 큐 제일 뒤에 있는 원소 반환 |
empty | bool | void | 큐가 비어있으면 true 아니면 false 반환 |
size | 사이즈 타입 | void | 큐 사이즈 반환 |
queue 라이브러리를 이용하면 매우 간단하게 문제를 해결할 수 있습니다.
소스코드는 C++로 작성하였습니다.
#include <iostream>
#include <queue>
#include <string>
using namespace std;
queue <int> q;
int main() {
int num;
cin >> num;
for (int i = 0; i < num; i++) {
string str;
cin >> str;
if (str == "push") {
int x;
cin >> x;
q.push(x);
}
else if (str == "pop") {
if (q.empty())
cout << -1 << endl;
else {
cout << q.front() << endl;
q.pop();
}
}
else if (str == "size") {
cout << q.size() << endl;
}
else if (str == "empty") {
cout << (int)q.empty() << endl;
}
else if (str == "front") {
if (q.empty())
cout << -1 << endl;
else
cout << q.front() << endl;
}
else if (str == "back") {
if (q.empty())
cout << -1 << endl;
else
cout << q.back() << endl;
}
}
}
반응형
'프로그래밍 공부 > 알고리즘' 카테고리의 다른 글
[알고리즘] 알고리즘 공부하기 좋은 사이트 추천 (0) | 2019.08.27 |
---|---|
[CodeUp] 4891 : 행복 (0) | 2019.08.07 |
[백준] 10773 제로 (0) | 2019.08.06 |
[백준] 2902 KMP는 왜 KMP일까? (0) | 2019.07.31 |
[백준] 2798 블랙잭 (0) | 2019.07.30 |