문제
풀이
로봇은 $N + 1$번째 칸 부터 $2N$번째 칸에는 올라가지 않습니다.
벨트를 $1$부터 $2N$까지 일자로 둡시다. 회전하는 것은 $2N$을 맨 앞으로 보내는 것으로 생각하면 됩니다.
로봇은 가장 오른쪽에 있는 것이 가장 먼저 올라간 것이므로 로봇의 위치를 연결 리스트로 관리해주면 됩니다.
코드
1 | |
C++ deque는 연결 리스트가 아니므로 임의 원소 접근이 $O(1)$에 가능합니다.
그러나 vector와 rotate를 써서 회전을 구현한 것 보다 유의미하게 빠르지 않았습니다.
편한 대로 구현하면 될 듯합니다.