본문 바로가기
CodingTest/Programmers

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

by yoondoo 2022. 11. 28.
728x90
class Solution {
    public int[] solution(int[] numbers, String direction) {
        
        int tmp = 0;
        
        if(direction.equals("right")){
            tmp = numbers[numbers.length-1];
            for(int i=numbers.length-2; i>=0; i--){
                numbers[i+1] = numbers[i];
            }
            numbers[0] = tmp;
        }else{
            tmp = numbers[0];
            for(int i=0; i<numbers.length-1; i++){
                numbers[i] = numbers[i+1];
            }
            numbers[numbers.length-1] = tmp;
        }
        
        return numbers;
    }
}

 

direction이  right이면 오른쪽으로 한 칸씩, left이면 왼쪽으로 한칸 씩 이동시켜야 한다.

 

right일 때 배열의 가장 뒤에 있는 값을 앞으로 옮기고

left일 때 앞에 있는 값을 배열의 가장 뒤로 옮기기 위해서 tmp변수를 사용했다.

 

방향에 따라 뒤에서부터 옮길지 앞에서부터 옮길지 주의해야한다.

 

right일 때

[ 1, 2, 4 ]  >  [ 4, 1, 2 ] 가 되야하지만 

 

앞에서 부터 옮기면

[ 1, 2, 4]  >  [ 1, 1, 4 ]  >  [ 1, 1, 1 ]  >  [ 4, 1, 1 ] 이 된다.

1번째 인덱스를 2번째 인덱스에 넣을 때 이미 변경된 값을 넣게되기 때문이다. 

 

따라서 right의 경우 뒤에서 부터 앞으로 한 칸씩 이동시켜주면 된다.

반응형

댓글