개발 기록 남기기✍️

[프로그래머스] 배열 자르기 본문

코딩 테스트 연습

[프로그래머스] 배열 자르기

너해동물원 2022. 12. 21. 16:00

🗒️ 문제 설명

정수 배열 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]

❇️ 나의 풀이

  • arr.splice(n,m)을 사용하면 되지 않을까?
    • 배열의 n번째 요소부터 m개를 지우는 것이기 때문에 문제와는 맞지 않는 방식이다. 
  • map을 통해서 배열 요소의 인덱스가 num1 <= index <= num2 인 요소들만 빈 배열인 arr에 push하면 되지 않을까?
function solution(numbers, num1, num2) {
  var answer = [];
    numbers.filter(function(elm, idx){
      if(idx >= num1 && idx <= num2){
        answer.push(elm);
      };
    });
  return answer;
}

 

✍️ 리뷰

✔️ 다른 사람의 코드를 보니까 splice를 사용한 사람들도 많았다.

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

✔️ 저렇게 해도 될거라는 생각은 들었지만 안전하게 map을 사용하자는 생각이 들었다.

✔️ 풀이들 중에서 forEach도 있고 filter를 사용한 분들도 계셨다! 코드에는 정해진 정답은 없다. 하지만, 어떻게 하는 것이 더 효율적이고 논리적인 사고인지 공부해야겠다.