[ 문제 ] : 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 ]
👉
[ 다른 사람 풀이 ]
'PS > BaekJoon' 카테고리의 다른 글
[1504] 특정한 최단 경로 - 최단경로 ★★★☆ / 복습 ○ (0) | 2021.11.28 |
---|---|
[5430] AC - 구현/문자열/덱 ★★☆☆ / 복습 ○ (0) | 2021.11.26 |
[14719] 빗 물 - 스택/투 포인터/구현 ★★★☆ / 복습 ○ (0) | 2021.11.25 |
[17298] 오큰수 - 스택/monotone stack ★★☆☆ / 복습 ○ (0) | 2021.11.25 |
[6198] 옥상 정원 꾸미기 - 스택/Monotone Stack ★★★☆ / 복습 ○ (0) | 2021.11.24 |