[1021] 회전하는 큐
BOJ/Simulation2018. 6. 4. 02:09
[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으로 변경해야 한다.