본문 바로가기
algorithm

[프로그래머스]배열 회전시키기 - java, python

by skysline 2023. 3. 9.
반응형

배열 회전시키기

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다.

배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return 하도록 solution 함수를 완성해 주세요.

입출력 예

입출력 예 #1

  • numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return 합니다.

입출력 예 #2

  • numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return 합니다.

java code

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

int[] answer = new int[numbers.length];

  • "answer" 배열을 "numbers" 배열과 같은 크기로 생성합니다.

for (int i = 0; i < numbers.length; i++)

  • "numbers" 배열의 모든 원소를 순회합니다.

System.out.println((i + 1) % numbers.length);

  • 현재 반복문이 몇 번째인지 확인하기 위한 디버깅 코드입니다.

if (direction.equals("right"))

  • 회전 방향이 "right"인 경우 실행됩니다.

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

  • "numbers" 배열의 i번째 원소를 (i+1) % numbers.length번째에 저장합니다. 이를 통해 회전 방향에 따라 배열을 이동시킬 수 있습니다.

System.out.println("answer[i] = " + answer[i]);

  • 현재 저장된 "answer" 배열의 값을 확인하기 위한 디버깅 코드입니다.

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

  • 회전 방향이 "left"인 경우 실행됩니다. "numbers" 배열의 (i+1)%numbers.length번째 원소를 "answer" 배열의 i번째에 저장합니다.

python code

def solution(numbers, direction):
    answer = [0] * len(numbers)
    for i in range(len(numbers)):
        if direction == "right":
            answer[(i + 1) % len(numbers)] = numbers[i]
        else:
            answer[i] = numbers[(i + 1) % len(numbers)]
    return answer

반응형

댓글