관리 메뉴

민우의 코딩노트

1021번 회전하는 큐 - C++ 본문

Algorithm/BOJ

1021번 회전하는 큐 - C++

미미누 2022. 7. 26. 00:39

[문제]
https://www.acmicpc.net/problem/1021

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net


[풀이]
큐 활용 문제

[코드]

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

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int N, M;
    cin >> N >> M;
    deque<int> Q;
    deque<int> Q2;
    deque<int> Q3;
    int ans = 0;
    for(int i=1; i<=N; i++){
        Q.push_back(i);
    }
    Q2 = Q;
    Q3 = Q;
    while(M--){
        int t;
        int tmp1 = 0;
        int tmp2 = 0;
        cin >> t;
        while( Q.front() != t) {
            Q.push_back(Q.front());
            Q.pop_front();
            tmp1++;
        }

        while(Q2.front() != t) {
            Q2.push_front(Q2.back());
            Q2.pop_back();
            tmp2++;
        }
    
        ans += (tmp1 <= tmp2) ? tmp1 : tmp2;
        if(tmp1 <= tmp2){
            Q.pop_front();
            Q3 = Q;
        }
        
        else{
            Q2.pop_front();
            Q3 = Q2;
        }
        Q = Q3;
        Q2 = Q3;
    }
    cout << ans;
}

'Algorithm > BOJ' 카테고리의 다른 글

1926번 그림 - C++  (0) 2022.07.27
5430번 AC - C++  (0) 2022.07.26
2164번 카드2 - C++  (0) 2022.07.25
18258번 큐 2 - C++  (0) 2022.07.25
6549번 히스토그램에서 가장 큰 직사각형 - C++  (0) 2022.07.25