배열 회전시키기

정병웅·2024년 6월 23일
0

알고리즘 스터디

목록 보기
15/15

업무를 진행 하면서 알고리즘의 필요성을 요즘 느끼고 있다,,,
그래서 시간이 될때마다 주기적으로 문제를 풀어보려고 한다!
언젠간,,,하다보면 도움이 되겠지,,,

문제설명

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

코드

class Solution {
    public int[] solution(int[] numbers, String direction) {
        int[] answer = new int[numbers.length];
        
        //right 3,1,2 -> 2,3,1
        //left 3,1,2 -> 1,2,3
        
        if (direction.equals("right")) {
            for(int i=0; i < numbers.length -1; i++) {
                answer[i+1] = numbers[i];
            }
            answer[0] = numbers[numbers.length -1];
        } else {
            for(int i=0; i< numbers.length -1; i++) {
                answer[i] = numbers[i+1];
            }
            answer[numbers.length -1] = numbers[0];
        }
        return answer;
    }
}

코드 설명

오른쪽 기준으로 설명 하면
1. answer 배열의 길이는 numbers 배열의 길이와 동일 하기 때문에 동일한 길이로 초기화
2. 오른쪽으로 한칸 씩 이동 -> 즉, 마지막 인덱스의 번호가 맨 왼쪽으로 위치해야함.
3. for문에서 numbers.length -1 의 이유!
-> 길이 만큼 돌릴 경우 answer[i+1] 에서 out of index 오류 발생
-> answer[0] 번째에 numbers 배열의 마지막 값을 넣어야 함.

부가 설명

위 알고리즘은 순차 탐색 알고리즘을 적용하였다.
순차 탐색 알고리즘은 값을 하나씩 탐색하며 위치를 변경하는 것으로 알고 있고, 해당 알고리즘이 적절하다고 생각한다!

시간 복잡도 : O(n)
n : 배열의 길이

profile
인생은 IT 노가다

0개의 댓글