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

김엄지·2024년 4월 25일

알고리즘

목록 보기
62/90

🐤 목표

앞으로 매일 꾸준히 코딩테스트를 진행하면서 단계를 높여가보자.

문제 설명

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

제한사항

  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.

입출력의 예

문제 풀이

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;
    }
}

문제의 규칙 찾기.
1) right의 경우 [1,2,...,9] -> [9,1,2,...,8]이 된다.
answer[0]이 numbers[마지막]
answer[1]이 numbers[0]
answer[2]이 numbers[1]
...

즉, i에서 1씩 차이가 난다.
answer[i] = numbers[i-1];
다만, answer[i]가 0일 때는 배열의 마지막 요소를 넣는다.
answer[0] = numbers[numbers.length - 1];

2) left의 경우 [1,2,...,9] -> [2,3,...,1]이 된다.
answer[0]이 numbers[1]
answer[1]이 numbers[2]
...
answer[마지막]이 numbers[0]

즉, i에서 1씩 차이가 난다.
answer[i] = numbers[i+1];
다만, answer[i]가 마지막일 때는 배열의 첫 번째 요소를 넣는다.
answer[numbers.length - 1] = numbers[0];

3) right와 left일 때의 조건을 나눈 뒤에 반복문으로 풀어준다.


참고
https://tripleup.tistory.com/114

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글