콘솔창 & 윈도우창/코딩 테스트

[실버3] 회전하는 큐

게임 개발 2024. 10. 18. 16:29

https://www.acmicpc.net/problem/1021

 

 

앞 뒤로 출력한다는 점에서 STL deque를 사용하는 것을 알 수 있었다.

 

https://www.acmicpc.net/problem/1021

#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <deque>
#include <iostream>

using namespace std;


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    deque<int> d;
    vector<int> v;
    int n, m, count = 0;
    int idx;

    cin >> n >> m;

    for (int i = 1; i <= n; i++)
    {
        d.push_back(i);
    }
    
    for (int i = 0; i < m; i++) {
        int x = 0;
        cin >> x;
        v.push_back(x);
    }
    int closeBack = d.back() - v.front();
    int closeFront = abs(d.front() - v.front());
    bool bcloseBack = closeBack < closeFront;
    while (v.size() != 0)
    {
        if (v.front() == d.front()) {
            v.erase(v.begin());
            d.pop_front();
            if (v.size() != 0) {
                for (idx = 0; idx < d.size(); idx++) {
                    if (v[0] == d[idx]) {
                        bcloseBack = d.size() - idx < idx ? true : false;
                        break;
                    }
                }
            }
            continue;
        }

        if (bcloseBack) {
            int temp = d.back();
            d.pop_back();
            d.push_front(temp);
            count++;
        }
        else {
            int temp = d.front();
            d.pop_front();
            d.push_back(temp);
            count++;
        }
    }

    cout << count;

    return 0;
}