나는 java 에서 배열을 shift 하는 방법이 가끔 헛갈릴때가 있다.
그중 rotation left 하는 방법을 정리하였다.
그런데 이 방법은 메모리를 주어진 배열의 2배를 사용한다. 주어진 배열만큼의 배열을 하나 더 생성하여서 옮겨진(rotation left) 위치에 copy를 하는 방식이다.
좀 더 효율을 높히기 위하여 생각할수있는 방법은 크게 2가지이다.
- 메모리 사용을 줄이기 위하여 직접 in-place 방법으로 처리하는 방식
- 속도를 높히기 위해서 하나하나를 copy하는 방식이 아닌 block단위로 copy하는 방식
1번 소스
2번 소스