Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 배열 회전시키기 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 배열 회전시키기 (Java/자바)

luke-king 2025. 12. 2. 12:22

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


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

이번 문제는 프로그래머스 "배열 회전시키기" 문제다.

문제 접근은 direction이 "rigth"라면 numbers[] 값을 오른쪽으로 하나씩 이동시키고 "left"값이 라면 왼쪽으로 하나씩 이동시키는 문제다. 그럼 바로 풀이해보겠다.

 

1. answer[]의 길이는 작업할 때 이동만 하기에 numbers[]의 길이로 지정해준다.

 

2. 조건식을 사용해 equals()로 "right" 값이라면 오른쪽으로 그렇지 않으면 "left"인 왼쪽으로 이동하게끔 조건식을 만들어준다.

 

3. 이제 right일 때를 작성해보자 오른쪽으로 한 칸씩 이동시키기 전에 answer[0] 번째 인덱스에는 numbers[]의 마지막 인덱스 값이 들어간다는 규칙을 발견할 수 있다. 그래서 answer[0]은 변하지 않기에 먼저 지정해준다.

 

4. for문을 사용하고 1부터 시작한다 이유는 3번째 설명에 0번을 지정해줬기 때문이다. 그리고 answer[i]번째의 값들은 numbers[]의 i+1을 해주면 된다. 그러면 answer[1]번 인덱스는 numbers[1-1](0번) 값이 answer[1]번에 알맞게 잘 들어가는 걸 확인할 수 있다.

 

5. 이제 left 왼쪽 이동을 보면 또 규칙이 있는데 answer []의 마지막 인덱스는 항상 numbers [0] 번째 인덱스 값이 들어온다는 거다 그러므로 위에 고정으로 값을 지정해준 것처럼 해준다.

 

6. 마지막으로 for문을 사용하는데 0번 인덱스부터 시작하니 위에 마지막 인덱스 값을 제외하고 실행시켜야 한다. 그러므로 answer[]의 길이에서 - 1을 해준 만큼 돌려준다. 그리고 answer[i] 번째 인덱스는 numbesr[i+1] 로 해주면 왼쪽으로 한 칸씩 이동하는 걸 확인할 수 있다.