프로그래머스 - 배열 회전시키기

남궁진 (jinvicky)·2026년 4월 21일

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/120844

배열을 왼쪽 또는 오른쪽으로 1칸씩 회전시킨 배열을 반환하는 문제이다.

Solution


이 문제는 요소를 push하는 것이 아닌 pull하는 코드를 짜야 한다.
그래서 v 값을 구할 때 헷갈릴 수 있다.

내가 어디로 갈까? 라는 방식은 push 방식이지만 누구를 i번째에 앉힐까는 pull 방식이다. pull 방식을 머릿속에 박아야 한다.

두번째, 중요한 외워야 하는 순환 공식이 있다.

(현재 인덱스(i) + 이동값(v) + 배열의 길이(length)) % 배열의 길이

  • 배열의 길이를 더하는 이유는 음수를 막기 위해서다.
  • 배열의 길이로 나머지 연산을 하는 이유는 배열이 끝까지 갔을 때 다시 앞으로 오게, 즉 순환하게 하기 위해서다.

그냥 외워라.

Code


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();
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글