
https://school.programmers.co.kr/learn/courses/30/lessons/120844
배열을 왼쪽 또는 오른쪽으로 1칸씩 회전시킨 배열을 반환하는 문제이다.
이 문제는 요소를 push하는 것이 아닌 pull하는 코드를 짜야 한다.
그래서 v 값을 구할 때 헷갈릴 수 있다.
내가 어디로 갈까? 라는 방식은 push 방식이지만 누구를 i번째에 앉힐까는 pull 방식이다. pull 방식을 머릿속에 박아야 한다.
두번째, 중요한 외워야 하는 순환 공식이 있다.
(현재 인덱스(i) + 이동값(v) + 배열의 길이(length)) % 배열의 길이
그냥 외워라.
import java.util.*;
class Solution {
public int[] solution(int[] numbers, String direction) {
List<Integer> list = new ArrayList<>();
for(int i = 0; i < numbers.length; i++) {
int v = (direction.equals("left")) ? 1 : - 1;
list.add(numbers[(i+v + numbers.length) % numbers.length]);
}
return list.stream().mapToInt(a->a).toArray();
}
}