문제
정수가 담긴 배열 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;
}
- numbers 배열의 복사본을 생성하여 rotated 변수에 할당합니다. 이렇게 함으로써 원본 배열을 변경하지 않고 회전시킬 수 있습니다.
- direction이 "left"인 경우, rotated 배열에서 첫 번째 요소를 추출하고(shift() 메서드 사용), 추출한 요소를 배열의 마지막에 추가 (push() 메서드 사용)합니다. 이렇게 함으로써 배열이 왼쪽으로 한 칸씩 회전됩니다.
- direction이 "right"인 경우, rotated 배열에서 마지막 요소를 추출하고(pop() 메서드 사용), 추출한 요소를 배열의 첫 번째에 추가(unshift() 메서드 사용)합니다. 이렇게 함으로써 배열이 오른쪽으로 한 칸씩 회전됩니다.
- 회전된 배열 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"]
참고:
'알고리즘' 카테고리의 다른 글
[프로그래머스] 7의 개수 (0) | 2023.06.27 |
---|---|
[프로그래머스] 369게임 (0) | 2023.06.20 |