본문 바로가기

알고리즘 Algorithm/백준 (BaekJoon)

백준 18258 : 큐 2 [C++]

문제


문제에 대한 링크는 여기를 클릭해주세요.

문제 설명


입력 받을 케이스의 개수를 입력한 뒤 push, pop, empty, size, front, back 중 하나를 입력하여 queue에 대한 연산을 수행합니다.

풀이


C++ STL에 있는 queue를 사용하였습니다.

소스 코드


#include <iostream>
#include <string>
#include <queue>

using namespace std;

int main()
{
    queue<int> q;
    string str;
    char ptr[6];
    int N = 0, num(0);

    scanf("%d", &N);

    for (int i = 0; i < N; i++)
    {
        scanf("%s", ptr);
        str = ptr;

        if(str == "push")
        {
            scanf("%d", &num);
            q.push(num);
        }

        else if(str == "pop")
        {
            if(q.empty())
                printf("-1\n");
            else
            {
                printf("%d\n", q.front());
                q.pop();
            }
        }

        else if(str == "size")
            printf("%d\n", q.size());

        else if(str == "empty")
            printf("%d\n", q.empty());

        else if(str == "front")
        {
            if(q.empty())
                printf("-1\n");
            else
                printf("%d\n", q.front());
        }

        else if(str == "back")
        {
            if(q.empty())
                printf("-1\n");
            else
                printf("%d\n", q.back());
        }
    }

    return 0;
}

주의 사항


cin, cout로 입출력 시 시간 초과가 발생할 수 있으니 scanf와 printf으로 대체해서 사용하시면 됩니다.
string 인스턴스는 scanf로 입력이 불가능하므로 배열을 따로 생성하여 string 인스턴스에 저장하는 방식을 사용하시면 됩니다.