회전하는 큐가 어떤 자료구조이지? 배운적이 있었나? 라고 고민하는 것은 이 문제를 대하는 태도가 아니라고 생각한다.
문제에서 큐가 할 수 있는 3가지 연산을 정해주었다.
이 연산의 의미를 어느 정도 해석해보면
원소를 왼쪽으로 이동하는 것은 왼쪽 원소를 뽑아서 오른쪽 끝에 삽입하는 것으로
원소를 오른쪽으로 이동하는 것은 오른쪽 원소를 뽑아서 왼쪽 끝에 삽입하는 것으로 볼 수 있다.
그럼 언제 왼쪽으로 이동하고 언제 오른쪽으로 이동하는 지 보자.
[ 1 2 3 4 5 6 7 ]
이라는 리스트에서 3을 빼내고 싶다면 3을 오른쪽이 아니라 왼쪽으로 이동시키는 것이 훨씬 효율적이다.
즉, 현재 3의 인덱스가 앞쪽에 가깝다면 왼쪽 이동, 뒤에 가깝다면 오른쪽 이동을 하면 된다.
이것은 리스트 길이와 인덱스를 비교하는 것으로 판단할 수 있다.
소스 코드를 살펴보자.