728x90
#include "iostream"
#include <deque>
using namespace std;
int N, M;
deque<int> dq;
int checkF(int temp){
int count = 0;
for(auto it=dq.begin(); it!=dq.end(); it++){
if(*it == temp) return count;
count++;
}
}
int checkB(int temp){
int count = 0;
for(auto it=dq.end(); it!=dq.begin(); it--){
if(*it == temp) return count;
count++;
}
}
int main(){
int count = 0;
cin >> N >> M;
for(int i=1; i<=N; i++) dq.push_back(i);
for(int i=0; i<M; i++){
int temp;
cin >> temp;
if(temp == dq.front()) dq.pop_front();
else if( checkF(temp) < checkB(temp) ){
for(auto it=dq.begin(); it!=dq.end(); it++ ){
if(temp == *it){
dq.pop_front();
break;
} else{
dq.push_back(*it);
dq.pop_front();
count++;
}
}
} else {
for(auto it=dq.begin(); it!=dq.end(); it--){
if(temp == *it){
dq.pop_front();
break;
} else{
dq.push_front(dq.back());
dq.pop_back();
count++;
}
}
}
}
cout << count;
}
STL에서 지원해주는 Queue는 begin, end 함수가 없어서 iterator를 돌리지 못한다. Deque에는 있어서 가능하다.
그 사실을 이번 문제에서 알게 되었다.
또한 Visual Stdio Code를 사용하여 문제를 사용하고 있었는데 전역변수를 어떻게 보는지 잘 몰랐다.
Watch에 변수를 추가하여 확인가능했다. 새로운 사실!
반응형
'코딩 관련 > c++' 카테고리의 다른 글
백준 17626 Four Square 코드 X 문제 설명 O (0) | 2020.07.20 |
---|---|
백준 5430 AC C++ 눈물 나와 (0) | 2020.05.09 |
백준 5397 키로커 C++ (0) | 2020.05.09 |
백준 1003번 피보나치 함수 C++ (0) | 2020.05.06 |
백준 1620 나는야 포켓몬 마스터 이다솜 (0) | 2020.05.03 |