자라는 개발자/문제풀이

백준 c++ 1021 회전하는 큐

자란다 2022. 1. 9. 23:40
728x90
반응형

1021 회전하는 큐

문제 풀이

#include <iostream>
#include <deque>
using namespace std;
int main()
{
    deque<int> dq;
    int m, n, cnt = 0;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        dq.push_back(i);
    }
    while (m--)
    {
        int idx, num;
        cin >> num;
        for (int i = 0; i < n; i++)
        {
            if (dq[i] == num)
            {
                idx = i;
                break;
            }
        }
        if (idx < dq.size() / 2 + 1)
        {
            for (int i = 0; i < dq.size(); i++)
            {
                if (dq.front() == num)
                {
                    dq.pop_front();
                    break;
                }
                dq.push_back(dq.front());
                dq.pop_front();
                cnt++;
            }
        }
        else
        {
            for (int i = 0; i < dq.size(); i++)
            {
                if (dq.front() == num)
                {
                    dq.pop_front();
                    break;
                }
                dq.push_front(dq.back());
                dq.pop_back();
                cnt++;
            }
        }
    }
    cout << cnt;
}

제시된 3개의 연산 중 몇번째 방법이 더 효율적일지를 판단할때 ,
들어온 숫자의 인덱스값을 기준으로 판단했다.

728x90
반응형