알고리즘 공부
[HackerRank] ctci-array-left-rotation java 풀이
철매존
2024. 11. 8. 06:56
728x90
문제 설명
1. 배열의 요소들을 왼쪽으로 돌리는거다.
2. 그리고 맨 뒤에 애는 오른쪽 끝으로 가는식
풀이 과정
1. 딱히 어려운 문제는 아니지만, 성능에 이슈가 있을 수 있다.
2. 간단하게 말하면 어디까지 가야할지를 확인하고 돌리면 된다.
3. 근데 그거를 매번 돌릴 필요 없고 얼마나 가면 되는지 알면 되는데, 어차피 배열 전체 크기는 정해져 있으니 갈 거리에서 배열크기 나머지를 구하면 이동한 변위가 된다.
public static List<Integer> rotLeft(List<Integer> a, int d) {
int maxLength = a.size();
d %= maxLength;
List<Integer> ans = new ArrayList<>(Collections.nCopies(maxLength, 0));
for(int i=0; i<maxLength; i++) {
int index = i - d;
if(index<0) index += maxLength;
ans.set(index, a.get(i));
}
return ans;
}