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;
}
'알고리즘 공부' 카테고리의 다른 글
[백준 2225번] 합분해 - java (0) | 2024.11.04 |
---|---|
[백준 1043번] 거짓말 - java (0) | 2024.10.20 |
[백준 3109번] 빵집 - java (1) | 2024.10.13 |
[백준 13422번] 도둑 - java (1) | 2024.10.12 |
[백준 1593번] 문자 해독 - java (1) | 2024.10.11 |