How We Coding

BOJ/Simulation +1

[1021] 회전하는 큐 : http://boj.kr/1021


### 시뮬레이션 ###


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    int n, m;
    scanf("%d%d"&n, &m);
 
    vector<int> v;
    for(int i=1; i<=n; i++)
        v.push_back(i);
 
    int cur=0, ans=0;
    for(int i=0; i<m; i++) {
        int target, tmp = 0;
        int size = v.size();
        scanf("%d"&target);
 
        for(int j=0; j<size; j++) {
            if(v[cur] == target) {
                v.erase(v.begin()+cur);
                if(cur == size-1) cur = 0;
                break;
            }
            cur = (cur+1)%size;
            tmp++;
        }
        ans += min(tmp, size-tmp);
    }
    printf("%d\n", ans); 
}
cs


>> 24 라인이 중요한 것 같다. 중간에 있는 벡터를 삭제하면 자동으로 앞당겨져 cur 에 저장되어 있는 인덱스를 변경할 필요가 없지만, 

     맨 마지막 데이터가 삭제되면 cur 의 인덱스를 0으로 변경해야 한다.