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

 

1021번: 회전하는 큐

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

www.acmicpc.net


[ 문제 접근 ]

 

 


[ 최종 코드 ]

 

#include<iostream>
#include<algorithm>
#include<vector>
#include<deque>
using std::cout; using std::cin;
using std::vector;
int n, m, sum;
int left, right;
int getCount(std::deque<int>& deq, int val) {
int cnt = 0;
for (int i = 0; i < n; i++) {
if (deq[i] == val) {
left = i;
right = deq.size() - i;
break;
}
}
if (left < right) {
for (int i = 0; i < left; i++) {
deq.push_back(deq.front());
deq.pop_front();
cnt++;
}
deq.pop_front();
}
else {
for (int i = 0; i < right; i++) {
deq.push_front(deq.back());
deq.pop_back();
cnt++;
}
deq.pop_front();
}
return cnt;
}
int main() {
std::ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
std::deque<int> deq;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
deq.push_back(i);
}
while (m--) {
int a;
cin >> a;
sum += getCount(deq,a);
}
cout << sum;
return 0;
}

[ Key Point ]

 

👉 


[ 다른 사람 풀이 ]

 

ref :: https://iingang.github.io/posts/BOJ-1021/

ref :: https://cocoon1787.tistory.com/267

+ Recent posts