백준 1021 회전하는 큐

JunSeok·2023년 1월 21일
0

백준

목록 보기
9/40

자료구조 deque을 활용하는 문제이다. 정답률 59퍼센트의 문제였지만 해결하지 못했다.
삭제하는 원소의 index를 알지 못했기 때문이다.
정답 코드를 보고 vector, array, deque 등 정해진 범위내에서 원소의 index를 구하는 방법을 알았다.
다음에는 꼭 활용하자.

#include <bits/stdc++.h>
using namespace std;

int N, M, sum;

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N;
    deque<int> DQ;
    for(int i = 1; i <= N; i++) DQ.push_back(i);
    cin >> M;
    while(M--) {
        int index;
        cin >> index;
        int idx = find(DQ.begin(), DQ.end(), index) - DQ.begin();
        // 반환받은 반복자 idx에서 시작 반환자인 begin을 빼주면 원하는 원소의 위치를 알 수 있다.
        while(DQ.front() != index) {
            if(idx < DQ.size() - idx) {
                DQ.push_back(DQ.front());
                DQ.pop_front();
            }
            else {
                DQ.push_front(DQ.back());
                DQ.pop_back();
            }
            sum++;
        }
        DQ.pop_front();
    }
    cout << sum;
}
profile
최선을 다한다는 것은 할 수 있는 한 가장 핵심을 향한다는 것

0개의 댓글