[코딩테스트] 프로그래머스 120844 배열 회전시키기

2022. 11. 17. 11:37CodingTest

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근방법

1. numbers 정수 배열과 같은 크기의 결과 배열 초기화

2. 배열의 왼쪽 방향으로 한칸씩 이동하는 경우

2.1 결과 배열의 i번째 값에 대해서 i+1번째 값을 저장, 만약 i번째가 마지막인 경우에는 (i+1) % n을 계산하여 저장

3. 배열의 오른쪽 방향으로 한칸씩 이동하는 경우

3.1 결과 배열의 i+1번째 값에 대해서 i번째 값을 저장, 만약 i번째가 마지막인 경우에는 (i+1) % n을 계산하여 저장

 

코드

class Solution {
    public int[] solution(int[] numbers, String direction) {
        if(direction.equals("left")){
            return moveLeftArray(numbers);
        }
        return moveRightArray(numbers);
    }

    private int[] moveLeftArray(int[] numbers){
        int n = numbers.length;
        int[] result = new int[n];
        for(int i = 0; i < n; i++){
            result[i] = numbers[(i + 1) % n];
        }
        return result;
    }

    private int[] moveRightArray(int[] numbers){
        int n = numbers.length;
        int[] result = new int[n];
        for(int i = 0; i < n; i++){
            result[(i + 1) % n] = numbers[i];
        }
        return result;
    }
}