본문 바로가기
  • Let's study
PS/Programmers

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

by 코딩고수이고파 2026. 7. 17.

문제

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

 

프로그래머스

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

programmers.co.kr

풀이

오른쪽으로 회전하는 경우에는 현재 원소를 한 칸 뒤의 인덱스에 저장한다.

answer[(i + 1) % numbers.length] = numbers[i];

여기서 (i + 1) % numbers.length를 사용하면 마지막 원소도 자연스럽게 첫 번째 위치로 이동한다.

예를 들어 numbers = {1, 2, 3}이라면 다음과 같이 저장된다.

i 저장위치 결과
0 1 answer[1] = 1
1 2 answer[2] = 2
2 0 answer[0] = 3

최종 결과는 {3, 1, 2}가 된다.

왼쪽으로 회전하는 경우에는 다음 위치의 값을 현재 위치에 저장한다.

answer[i] = numbers[(i + 1) % numbers.length];

마찬가지로 % 연산을 사용하기 때문에 마지막 인덱스에서는 자동으로 첫 번째 원소를 가져오게 된다.

예를 들어 numbers = {1, 2, 3}이라면 다음과 같이 저장된다.

i 가져오는 위치 결과
0 1 answer[0] = 2
1 2 answer[1] = 3
2 0 answer[2] = 1

최종 결과는 {2, 3, 1}이 된다.

코드

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

댓글