본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 배열 회전시키기

728x90

 

문제 풀이 힌트

  • 결과를 저장할 배열 생성:
    • result 배열을 입력 배열 numbers와 동일한 크기로 초기화합니다.
  • 방향이 "right"인 경우:
    • 입력 배열의 마지막 원소를 result 배열의 첫 번째 위치에 저장합니다.
    • 나머지 원소들을 오른쪽으로 한 칸씩 이동합니다.
      • 예를 들어, numbers[0]는 result[1]에 저장됩니다.
  • 방향이 "left"인 경우:
    • 입력 배열의 첫 번째 원소를 result 배열의 마지막 위치에 저장합니다.
    • 나머지 원소들을 왼쪽으로 한 칸씩 이동합니다.
      • 예를 들어, numbers[1]는 result[0]에 저장됩니다.
  • 다른 방법으로 "deque"를 사용

 


더보기

배열을 이용한 풀이

class Solution {
    public int[] solution(int[] numbers, String direction) {
        // 결과를 저장할 배열 생성, 크기는 입력 배열과 동일
        int[] result = new int[numbers.length];
        
        // 방향이 "right"인 경우
        if (direction.equals("right")) {
            // 마지막 원소를 첫 번째 위치로 이동
            result[0] = numbers[numbers.length - 1];
            
            // 나머지 원소들을 오른쪽으로 한 칸씩 이동
            for (int i = 1; i < numbers.length; i++) {
                result[i] = numbers[i - 1];
            }
        } else {
            // 방향이 "left"인 경우
            // 첫 번째 원소를 마지막 위치로 이동
            result[numbers.length - 1] = numbers[0];
            
            // 나머지 원소들을 왼쪽으로 한 칸씩 이동
            for (int i = 0; i < numbers.length - 1; i++) {
                result[i] = numbers[i + 1];
            }
        }
        
        // 결과 배열 반환
        return result;
    }
}

 

deque를 이용한 풀이

class Solution {
    public int[] solution(int[] numbers, String direction) {
        // 결과를 저장할 배열 생성, 크기는 입력 배열과 동일
        int[] result = new int[numbers.length];
        
        // 방향이 "right"인 경우
        if (direction.equals("right")) {
            // 마지막 원소를 첫 번째 위치로 이동
            result[0] = numbers[numbers.length - 1];
            
            // 나머지 원소들을 오른쪽으로 한 칸씩 이동
            for (int i = 1; i < numbers.length; i++) {
                result[i] = numbers[i - 1];
            }
        } else {
            // 방향이 "left"인 경우
            // 첫 번째 원소를 마지막 위치로 이동
            result[numbers.length - 1] = numbers[0];
            
            // 나머지 원소들을 왼쪽으로 한 칸씩 이동
            for (int i = 0; i < numbers.length - 1; i++) {
                result[i] = numbers[i + 1];
            }
        }
        
        // 결과 배열 반환
        return result;
    }
}

 

 

728x90