본문 바로가기
하루하루/프로그래머스 문제풀이

[Lv.0 - Java] 120844. 배열 회전시키기

by 키튼햄 2023. 12. 11.

문제

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

 

 

 

 

풀이

회전이라고는 했지만 결국 direction이 "right"이면 오른쪽으로 한칸 이동, "left"이면 왼쪽으로 한칸 이동인 셈이다. 

1) if 조건문을 사용해서 right인지 left인지 조건을 주었다. (내용이 일치하는지 확인하는 것이기 때문에 ==이 아니라 equals() 메소드를 사용했다.)

2) direction 이 right 일때는 먼저 for문을 이용해서 답을 넣어줄 배열인 answer에 numbers[i+1] 의 값들을 차곡차곡 넣어주었다. 그러면 answer의 마지막 자리가 남게되는데 이 부분을 비워두게되면 오류가 난다. 정적 배열이라. 그래서 꼭 마지막 배열은 for문을 나와서 numbers[0]의 숫자를 넣었다.

3) direction이 left일때는 먼저 answer[0]의 값에 numbers의 마지막 자리 숫자를 넣어주었다. 그리고 for문을 사용해서 answer[1] 부터 값이 들어갈 수 있도록 초기시작을 int i=1; 이라고 해주었고, answer[i]에 numbers[i-1]의 숫자들이 들어가도록 만들었다.

 

 

 

 

코드

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