JAVA/프로그래머스 코딩테스트 입문

[프로그래머스 LV.0] 배열 회전시키기

sundori 2024. 11. 27. 21:33

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.
class Solution {
    public int[] solution(int[] numbers, String direction) {
        int n = numbers.length; // 배열의 길이
        int[] result = new int[n]; // 회전 결과를 저장할 새 배열

        if (direction.equals("right")) {
            // 오른쪽 회전: 마지막 요소를 첫 번째로 이동
            result[0] = numbers[n - 1];
            for (int i = 1; i < n; i++) {
                result[i] = numbers[i - 1];
            }
        } else {
            // 왼쪽 회전: 첫 번째 요소를 마지막으로 이동
            result[n - 1] = numbers[0];
            for (int i = 0; i < n - 1; i++) {
                result[i] = numbers[i + 1];
            }
        }

        return result;
    }
}

    핵심 아이디어

    • 배열 회전이란 특정 방향으로 배열의 요소를 재배치하는 작업이다.
      • "right": 마지막 요소를 배열의 맨 앞으로 이동, 나머지 요소는 한 칸 뒤로 이동.
      • "left": 첫 번째 요소를 배열의 맨 뒤로 이동, 나머지 요소는 한 칸 앞으로 이동.

    구현 방법

    1. 오른쪽 회전:
      • 배열의 마지막 요소를 저장.
      • 각 요소를 한 칸씩 뒤로 밀고, 마지막 요소를 배열의 첫 번째에 넣는다.
      • 예: [1,2,3][1, 2, 3][3,1,2][3, 1, 2].
    2. 왼쪽 회전:
      • 배열의 첫 번째 요소를 저장.
      • 각 요소를 한 칸씩 앞으로 이동하고, 첫 번째 요소를 배열의 마지막에 넣는다.
      • 예: [4,455,6,4,−1,45,6][4, 455, 6, 4, -1, 45, 6][455,6,4,−1,45,6,4][455, 6, 4, -1, 45, 6, 4].
    1.