알고리즘

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

HYEBEEN 2023. 6. 20. 00:14

문제

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

 

풀이

function solution(numbers, direction) {
    const length = numbers.length;
    const rotated = [...numbers];
    
    if( direction === "left" ){
        const firstEl = rotated.shift()
        rotated.push(firstEl)
    }else if( direction === "right"){
        const lastEl = rotated.pop()
        rotated.unshift(lastEl)
    }
    
    return rotated;
}

 

  1. numbers 배열의 복사본을 생성하여 rotated 변수에 할당합니다. 이렇게 함으로써 원본 배열을 변경하지 않고 회전시킬 수 있습니다.
  2. direction이 "left"인 경우, rotated 배열에서 첫 번째 요소를 추출하고(shift() 메서드 사용), 추출한 요소를 배열의 마지막에 추가 (push() 메서드 사용)합니다. 이렇게 함으로써 배열이 왼쪽으로 한 칸씩 회전됩니다.

  3.  direction이 "right"인 경우, rotated 배열에서 마지막 요소를 추출하고(pop() 메서드 사용), 추출한 요소를 배열의 첫 번째에 추가(unshift() 메서드 사용)합니다. 이렇게 함으로써 배열이 오른쪽으로 한 칸씩 회전됩니다.

  4.  회전된 배열 rotated을 반환합니다.

Array.prototype.shift()

shift() 메서드는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다. 이 메서드는 배열의 길이를 변하게 합니다.

const fruits = ["apple", "banana", "orange"];

const removedElement = fruits.shift();

console.log(fruits); // ["banana", "orange"]
console.log(removedElement); // "apple"

 

Array.prototype.unshift()

unshift() 메서드는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환합니다.

const fruits = ["banana", "orange"];

fruits.unshift("apple");

console.log(fruits); // ["apple", "banana", "orange"]

 


참고:

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr