기본 콘텐츠로 건너뛰기

[BOJ 10845] 큐 - C++ stl로 구현한 string parser 사용하기

#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <queue>
#include <iterator>
template<typename Out>
void split(const std::string &s, char delim, Out result) {
std::stringstream ss;
ss.str(s);
std::string item;
while (std::getline(ss, item, delim)) {
*(result++) = item;
}
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, std::back_inserter(elems));
return elems;
}
using namespace std;
int main(void)
{
int N;
cin >> N;
queue<int> _queue;
cin.ignore(); //cin >> N에서 남아있는 \n을 제거하는 역할을한다.
for (int i=0;i<N;i++)
{
string str ="";
getline(cin,str);
vector<string> elems = split(str,' ');
if (elems[0] == "push")
_queue.push(stoi(elems[1]));
else if (elems[0] == "pop")
{
if (_queue.empty() == true)
cout << -1 << endl;
else
{
cout << _queue.front() << endl;
_queue.pop();
}
}
else if (elems[0] == "size")
cout << _queue.size() << endl;
else if (elems[0] == "empty")
{
if (_queue.empty() == true)
cout << 1 << endl;
else
cout << 0 << endl;
}
else if (elems[0] == "front")
{
if (_queue.empty() == true)
cout << -1 << endl;
else
cout << _queue.front() << endl;
}
else if (elems[0] == "back")
{
if (_queue.empty() == true)
cout << -1 << endl;
else
cout << _queue.back() << endl;
}
elems.clear();
}
}
view raw [BOJ 10845] hosted with ❤ by GitHub

댓글

이 블로그의 인기 게시물

Tree traversal의 3가지

1. 전위 순회 (Preorder Traversal) Root -> Left Tree -> Right Tree   ( 루트를 제일 처음에 방문 ) 2. 중위 순회 (Inorder Traversal) Left Tree -> Root -> Right Tree   ( 루트를 중간에 방문 ) 3. 후위 순회 (Postorder Traversal) Left Tree -> Right Tree -> Root   ( 루트를 제일 마지막에 방문 ) <소스코드> 출처 : http://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder /// C program for different tree traversals #include <stdio.h> #include <stdlib.h> /* A binary tree node has data, pointer to left child    and a pointer to right child */ struct node {      int data;      struct node* left;      struct node* right; }; /* Helper function that allocates a new node with the    given data and NULL left and right pointers. */ struct node* newNode(int data) {      struct node* node = (struct node*)                 ...