SG의 개발 공부로그

배열 자르기 [프로그래머스 코딩테스트 자바스크립트] 본문

CodingTest

배열 자르기 [프로그래머스 코딩테스트 자바스크립트]

DebeloperSG 2023. 2. 6. 22:25
728x90

배열 자르기

 

문제 설명

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, 

numbers의 num1번째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 

return 하도록 solution 함수를 완성해 보세요.

 

 

 

제한사항

  • 2 ≤ numbers의 길이 ≤ 30
  • 0 ≤ numbers의 원소 ≤ 1,000
  • 0 ≤num1 < num2 < numbers의 길이

 

 

입출력 예

numbers num1 num2 result
[1, 2, 3, 4, 5] 1 3 [2, 3, 4]
[1, 3, 5] 1 2 [3, 5]

 

 

 

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4까지 자른 [2, 3, 4]를 return 합니다.

 

입출력 예 #2

  • [1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.

 

 

풀이

slice 함수를 사용해서 잘라 주었다.

num1 번째 인덱스부터 num2 번째 인덱스까지 자른다.

하지만 주의할 점이 첫 번째 인자로 넘어온 인덱스가 가리키는 값은 포함되지만,

두 번째 인자로 넘어온 종료 인덱스가 가리키는 값은 포함되지 않기 때문에 +1을 더해주었다.

function solution(numbers, num1, num2) {
    let answer = [];
        answer = numbers.slice(num1, num2+1);
     return answer
}

 

 

다른 풀이

splice를 사용해서도 가능하다.

slice와 splice 가 단어도 비슷하고 자르다는 비슷한 기능 때문에 햇갈릴 때가 많다.

차이점에 대해서는 링크 참고 https://www.daleseo.com/js-array-slice-splice/

function solution(numbers, num1, num2) {
    return numbers.splice(num1, num2-num1+1);
}

 

 

반복문을 활용해서 풀이한 방식이다.

시작점을 num1으로 하고 num2 + 1까지 반복문을 돌려서 

numbers [i]로 인댁스에 해당하는 요소를 배열에 푸시해 주었다.

function solution(numbers, num1, num2) {
    let answer = [];

    for (let i = num1; i < num2+1; i++) {
        answer.push(numbers[i])
    }

    return answer;
}

 

728x90