티스토리 뷰

📌문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

📌나의 풀이

function solution(numbers, num1, num2) {
    var answer = [];
    
    answer = numbers.splice(num1, num2);
    
    return answer;
}
테스트 1
입력값 〉 [1, 2, 3, 4, 5], 1, 3
기댓값 〉 [2, 3, 4]
실행 결과 〉 테스트를 통과하였습니다.

 

테스트 2
입력값 〉 [1, 3, 5], 1, 2
기댓값 〉 [3, 5]
실행 결과 〉 테스트를 통과하였습니다.

 

테스트 3
입력값 〉 [1, 2, 4, 5, 6, 7], 2, 4
기댓값 〉 [4, 5, 6]
실행 결과 〉 실행한 결괏값 [4,5,6,7]이 기댓값 [4,5,6]과 다릅니다.

 

splice(num1, num2)로 계속 시도하다가 최종 제출해서 두 번 정도 계속 실패가 떠서 테스트 코드 추가해서 확인해 봤는데 .. 😮?!

slice와 다르게 splice는 인덱스 to 인덱스로 자르는 게 아니라 splice(시작 인덱스, 삭제할 개수)였다. 

 

[1]. splice() 

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

 

여기서 num2-num1+1는 자르고 싶은 요소의 개수를 의미합니다.

num1에서 시작하여 num2까지 포함되므로, 총 개수를 구하기 위해 +1을 더해줍니다.

 

개수를 구하는 부분은 쉽게 풀어서 설명을 작성해 보겠습니다. 🤔

예시 
배열이 numbers = [10, 20, 30, 40, 50, 60]이고, num1 = 2와 num2 = 4라고 가정해 봅시다.

num1 = 2는 인덱스 2를 나타내므로, 배열에서 30을 의미합니다.
num2 = 4는 인덱스 4를 나타내므로, 배열에서 50을 의미합니다.

잘라야 할 범위

우리는 num1부터 num2까지 잘라야 하므로 numbers에서 [30, 40, 50]을 반환하고자 합니다.

num2 - num1 + 1은 4 - 2 + 1 = 3이 됩니다.이 계산은 "몇 개의 요소를 자를지"를 나타내며, 3개를 의미합니다.

numbers.splice(num1, num2 - num1 + 1)은 numbers 배열에서 인덱스 num1부터 시작해서 3개의 요소를 잘라 반환합니다.

결과적으로 [30, 40, 50]이 반환됩니다.

 

[2] . slice()

 

내가 제출한 방법

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

 

slice는 slice(2, 4)일 경우 2번째부터 3번째에 있는 정수를 반환하기 때문에 마지막 인덱스에 +1을 했습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함