
auto it = find(deque.begin(), deque.end(), target_num);
int index = it - deque.begin();
위 코드가 핵심이었다.
파이썬과 달리 rotate가 없으므로, deque의 pop_front - push_back, pop_back-push_front를 결합해 사용하면 될 듯 하다.
단순히, 왼쪽 경계에 가까우면 왼쪽으로 회전, 오른쪽 경계에 가까우면 오른쪽으로 회전하는 문제였다.
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
deque<int> d;
for (int i = 1; i <= n; i++) {
d.push_back(i);
}
int result = 0;
for (int i = 0; i < m; i++) {
int num;
cin >> num;
auto iter = find(d.begin(), d.end(), num);
int idx = iter - d.begin();
int left = idx;
int right = d.size() - idx;
if (left <= right) {
while (left--) {
d.push_back(d.front());
d.pop_front();
result++;
}
} else {
while (right--) {
d.push_front(d.back());
d.pop_back();
result++;
}
}
d.pop_front();
}
cout << result << endl;
}'Algorithm > BOJ' 카테고리의 다른 글
| [백준] 11003번 Gold 1 최솟값 찾기, C++ 코드 (0) | 2025.12.11 |
|---|---|
| [백준] 18258번 Silver 4 큐 2, C++ 코드 (0) | 2025.12.11 |
| [백준] 1969번 Silver 4 DNA, C++ 코드 (0) | 2025.12.10 |
| [백준] 17413번 Silver 3 단어 뒤집기 2, C++ 코드 (0) | 2025.12.08 |
| [백준] 1629번 Silver 1 곱셈, Java 코드 (0) | 2024.10.06 |