서두르지 말고 쉬지 말자

백준 10845번 큐(C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 10845번 큐(C++)

philos 2025. 4. 25. 23:21

solved.ac 티어 : 실버4

문제 유형 : 자료구조,큐

문제 해결 방안 : 큐를 구현해서 큐에 사용되는 일반적인 기능들을 구현하는 문제이다. 큐가 선입선출 자료형이라는 것을 알고 문제에서 요구하는 것을 구현하기만 하면 되는 문제이다. C++은 동적 배열인 vector라이브러리를 사용하면 비교적 쉽게 구현할 수 있다.

0.5초라 혹시 몰라 iostream과 stdio 동기화를 끊는 코드를 넣엇 시간을 단축시켰다.

문제 해결 소감 : 큐의 개념만 알면 푸는 쉬운 문제였다.

#include <iostream>
#include <string>
#include <vector>
int N;
std::vector<int> v;
std::string str;
int x;
int main()
{
    std::ios::sync_with_stdio(false); // 시간 단축용 함수(iotream과 cstdio 동기화 해제)

    std::cin >> N;
    for (int i = 0; i < N; i++)
    {
        std::cin >> str;
        if (str == "push")
        {
            std::cin >> x;
            v.push_back(x);
        }
        else if (str == "pop")
        {
            if (v.size() == 0)
            {
                std::cout << -1 << '\n';
            }
            else
            {
                std::cout << *(v.begin()) << '\n';
                v.erase(v.begin());
            }
        }
        else if (str == "size")
        {
            std::cout << v.size() << '\n';
        }
        else if (str == "empty")
        {
            if (v.size() == 0)
            {
                std::cout << 1 << '\n';
            }
            else
            {
                std::cout << 0 << '\n';
            }
        }
        else if (str == "front")
        {
            if (v.size() == 0)
            {
                std::cout << -1 << '\n';
            }
            else
            {
                std::cout << *(v.begin()) << '\n';
            }
        }
        else if (str == "back")
        {
            if (v.size() == 0)
            {
                std::cout << -1 << '\n';
            }
            else
            {
                std::cout << *(v.end() - 1) << '\n';
            }
        }
    }

    return 0;
}
반응형