본문 바로가기
Javascript/코딩테스트-연습

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

by BeomBe 2024. 3. 28.
반응형

문제 설명

배열을 움직이는 연습을 하는데 좋은 문제입니다.

 

shift, unshift, push, pop 함수 개념을 알고있다면 해결 할 수 있습니다.

 

1. shift()

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

const array1 = [1, 2, 3];

const firstElement = array1.shift();

console.log(array1);
// Expected output: Array [2, 3]

console.log(firstElement);
// Expected output: 1

 

2. unshift()

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

const array1 = [1, 2, 3];

console.log(array1.unshift(4, 5));
// Expected output: 5

console.log(array1);
// Expected output: Array [4, 5, 1, 2, 3]

 

3. pop()

메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.

const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];

console.log(plants.pop());
// Expected output: "tomato"

console.log(plants);
// Expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]

plants.pop();

console.log(plants);
// Expected output: Array ["broccoli", "cauliflower", "cabbage"]

 

4. push()

메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다.

const animals = ['pigs', 'goats', 'sheep'];

const count = animals.push('cows');
console.log(count);
// Expected output: 4
console.log(animals);
// Expected output: Array ["pigs", "goats", "sheep", "cows"]

animals.push('chickens', 'cats', 'dogs');
console.log(animals);
// Expected output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]

 

나의 풀이

위에 언급했던 함수들을 활용하여 간단히 해결했습니다.

function solution(numbers, direction) {
    if(direction === "right")
        numbers.unshift(numbers.pop());
    else
        numbers.push(numbers.shift());
    return numbers;  
}

 

함수들에 대해 자세히 알고싶으신 분들은 아래 링크 참조하시면 됩니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/push

반응형