728x90
반응형
1021 회전하는 큐
문제 풀이
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> dq;
int m, n, cnt = 0;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
dq.push_back(i);
}
while (m--)
{
int idx, num;
cin >> num;
for (int i = 0; i < n; i++)
{
if (dq[i] == num)
{
idx = i;
break;
}
}
if (idx < dq.size() / 2 + 1)
{
for (int i = 0; i < dq.size(); i++)
{
if (dq.front() == num)
{
dq.pop_front();
break;
}
dq.push_back(dq.front());
dq.pop_front();
cnt++;
}
}
else
{
for (int i = 0; i < dq.size(); i++)
{
if (dq.front() == num)
{
dq.pop_front();
break;
}
dq.push_front(dq.back());
dq.pop_back();
cnt++;
}
}
}
cout << cnt;
}
제시된 3개의 연산 중 몇번째 방법이 더 효율적일지를 판단할때 ,
들어온 숫자의 인덱스값을 기준으로 판단했다.
728x90
반응형
'자라는 개발자 > 문제풀이' 카테고리의 다른 글
백준 c++ 3273번 두 수의 합 (0) | 2022.01.11 |
---|---|
백준 c++ 1475번 방 번호 (0) | 2022.01.10 |
백준 c++ 23841번 데칼코마니 (1) | 2022.01.06 |
백준 C++ 10809 알파벳 찾기 (0) | 2022.01.05 |
백준 C++ 17219번 비밀번호 찾기 (8) | 2022.01.04 |