배열 회전시키기

Wook·2024년 9월 8일

🧩코딩테스트

목록 보기
27/46
post-thumbnail

문제

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

조건

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

예시

numbersdirectionresult
[1, 2, 3]"right"[3, 1, 2]
[4, 455, 6, 4, -1, 45, 6]"left"[455, 6, 4, -1, 45, 6, 4]

풀이

  • ArrayList의 제일 앞 칸에 요소를 추가하는 과정과 유사
  • if 문으로 direction의 종류에 따라 분기를 설정
  • 한쪽 끝에서 반대쪽 끝으로 가야 하는 값은 미리 지역 변수에 복사해놓고 빈 칸으로 생각
  • 반복문을 활용하여 이동방향의 제일 끝의 값에서부터 하나씩 내려오면서 복사해야 다음 차례에 옮겨야 할 요소가 덮어씌워지지 않음

코드

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

0개의 댓글