프로그래머스 입문 : 배열 회전시키기
function solution(numbers, direction) {
var answer = [];
//answer에 push
//right일때
if (direction == "right") {
answer.push(numbers[numbers.length - 1]);
for (let i = 0; i < numbers.length - 1; i++) {
answer.push(numbers[i]);
}
}
//left일때
else if (direction == "left") {
for (let i = 1; i < numbers.length; i++) {
answer.push(numbers[i]);
}
answer.push(numbers[0]);
}
return answer;
}
배열에 push를 하게 되면,
위치를 지정할 수 없고, 무조건 배열의 맨 끝에 요소를 추가하게 된다.
그러므로 right 회전일 때는
맨 끝 숫자가 맨 앞으로 와야 하므로
먼저 answer 배열에 push를 하고 반복문을 실행한다.
반면 left 회전일 때는
맨 앞 숫자가 맨 끝으로 가야 하므로
반복문을 먼저 실행한 후 맨 앞 숫자를 push한다.
function solution(numbers, direction) {
var answer = [];
//answer에 push
//right일때
if (direction == "right") {
let lastNum = numbers.slice(numbers.length - 1);
let restNum = numbers.slice(0, numbers.length - 1);
answer.push(...lastNum);
answer.push(...restNum);
}
//left일때
else if (direction == "left") {
let firstNum = numbers.slice(0, 1);
let restNum = numbers.slice(1, numbers.length);
answer.push(...restNum);
answer.push(...firstNum);
}
return answer;
}
배열 메서드인 slice를 활용해서 풀이도 가능하다.
slice를 활용하면,
주어진 배열에서 원하는 만큼만 잘라낼 수 있다.
slice(0,2)인 경우
0번째 요소부터 1번째 요소까지(2번째 앞까지) 얕게 복사한 배열을 반환한다.