개발로그필름

[프로그래머스] 배열 회전시키기 javascript (pop, shift, splice, filter, delete) 본문

coding test/프로그래머스

[프로그래머스] 배열 회전시키기 javascript (pop, shift, splice, filter, delete)

yuullog 2023. 4. 27. 23:37
728x90
반응형
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/120844

 

프로그래머스

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

programmers.co.kr

 

이번 문제는 좀 수월하게 풀어냈다

 

문제

 

나의 풀이

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

조건문을 사용해 방향이 right와 left인 것을 먼저 구분하고

right라면 뒤에 있는 원소를 pop()으로 제거하고 num 변수에 저장해주었다가

numbers에 unshift()로 배열 맨 앞에 추가 시킨다


그리고 numbers 배열 return

left라면 맨 앞 원소를 shift()로 제거하고 num 변수에 저장해두었다가

numbers에 push()로 배열 맨 뒤에 추가 시킨다

 

 

JavaScript 배열 요소 삭제하는 방법

  • pop() 배열 마지막 요소 삭제
  • shift() 배열 첫 번째 요소 삭제
  • splice() 배열 요소 삭제
  • filter() 조건에 일치하는 새 배열 생성
  • delete() 배열 요소 삭제
pop()

배열의 마지막 요소 삭제해 삭제된 요소 값 반환

var array = [1, 2, 3, 4];

var result = array.pop();  // 4

console.log(array);   // [1, 2, 3]

 

shift()

배열의 첫 번째 요소 삭제해 삭제된 요소 값 반환

var array = [1, 2, 3, 4];

var result = array.shift();  // 1

console.log(array);   // [2, 3, 4]

 

splice()

첫 번째 인수로 제거할 요소 인덱스 설정, 두 번째 인수로 제거할 요소 개수 설정

반환값은 삭제 후 배열 

var array = [1, 2, 3, 4];

var result = array.splice(1, 2);  // [2, 3]

console.log(array);   // [1, 4]
// 첫 번째 인자가 0일 경우

var array = [1, 2, 3, 4];

var result = array.splice(0);

console.log(array);  // []
console.log(result);  // [1, 2, 3, 4]

 

filter()

기존 배열이 변경되지 않고 새로운 배열 반환

var array = [1, 2, 3, 4];

var filterArray = array.filter( (num) => return num < 4; );

console.log(filterArray);   // [1, 2, 3]

 

delete()

특정 배열 요소 삭제해 빈 값으로 변경. 배열 길이 그대로

var array = [1, 2, 3, 4];

delete array[0];

console.log(array);   // [empty, 2, 3, 4]

 

 

 

다른 사람 풀이

function solution(numbers, direction) {
    var answer = [];

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

    answer = numbers;

    return answer;
}

나는 변수를 선언해 풀었는데 변수를 선언 안해도 실행이 된다.

변수 선언 시 메모리 공간을 차지하기 때문에 변수 선언 안하는게 더 좋다!

 

 

 

반응형
LIST
Comments