728x90
- 문제
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
- 풀이법
뽑으려는 수의 위치가 왼쪽 , 오른쪽 중 어느 방향과 더 가까운지를 판별한 후 왼쪽과 오른쪽 중 이동방향이 더 적은 방향으로 push와 pop을 실행한다.
- 풀이 - C++
#include <iostream>
#include <deque>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
deque <int> dq;
int n,m;
int left_cnt = 0, right_cnt = 0;
int ans = 0;
cin >> n;
cin >> m;
for (int i = 1; i <= n; i++)
dq.push_back(i);
while (m--) {
int num;
cin >> num;
for (int i = 0; i < dq.size(); i++) {
if (dq[i] == num) {
left_cnt = i;
right_cnt = dq.size() - i;
//break;
}
}
if (left_cnt <= right_cnt) {
while (true) {
if (dq.front() == num) {
dq.pop_front();
break;
}
dq.push_back(dq.front());
dq.pop_front();
ans++;
}
}
else {
ans++;
while (true) {
if (dq.back() == num) {
dq.pop_back();
break;
}
dq.push_front(dq.back());
dq.pop_back();
ans++;
}
}
}
cout << ans;
return 0;
}
728x90
'PS > 백준' 카테고리의 다른 글
[ 백준 ] 25238번 : 가희와 방어율 무시 - (CPP/C/C++) (0) | 2022.06.07 |
---|---|
[ 백준 ] 24416번 : 알고리즘 수업 - 피보나치 수 1 - (CPP/C/C++) (0) | 2022.06.06 |
[ 백준 ] 1292번 : 쉽게 푸는 문제 - (CPP/C/C++) (0) | 2022.06.05 |
[ 백준 ] 14425번 : 문자열 집합 - (CPP/C/C++) (0) | 2022.05.09 |
[ 백준 ] 2557번 : Hello World - (C++/C/CPP , JAVA/자바, PYTHON/파이썬) (0) | 2022.05.09 |