본문 바로가기
기초다지기/JS 코딩테스트

[Lv0] js 배열내 2의 영역

by 김빵그 2023. 8. 17.

 

문제

주어진 정수 배열 arr에서 2를 포함하는 영역을 찾고 2가 하나도 없다면 -1을 반환

 

내 답 (for, slice)

function solution(arr) {
    var answer = [];
    for(let i = 0; i <arr.length; i++) {
        if(arr[i] === 2) {
            answer.push(i)
        }
    }
    return answer.length !== 0 ? arr.slice(answer[0], answer[answer.length - 1] + 1) : [-1];
}
  • answer 배열 : 주어진 배열에 2의 인덱스를 저장하기 위한 배열
  • for문을 사용하여 2의 인덱스를 찾가 answer에 추가
  • 반환 : answer.length != 배열에 2의 인덱스가 적어도 하나 이상 들어가 있는지 확인후 반환값 결정
  • slice : [start,end] 를 사용하여 배열의 첫번째 인덱스부터 마지막 인덱스까지 부분 배열을 추출

indexOf / laseIndexOf

function solution(arr) {
    const from = arr.indexOf(2);
    const end = arr.lastIndexOf(2);

    return from === -1 ? [-1] : arr.slice(from, end+1);
}
  • indexOf 와 lastIndexOf를 사용하여 첫번째와 마지막 2의 인덱스를 찾아 각 변수에 저장
  • from 가 없을 경우 -1 있을 시 from 에서 end까지 슬라이스 한 결과 반환
 

Array.prototype.slice() - JavaScript | MDN

slice() 메서드는 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.

developer.mozilla.org

 

 

Array.prototype.indexOf() - JavaScript | MDN

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.

developer.mozilla.org

 

 

Array.prototype.lastIndexOf() - JavaScript | MDN

lastIndexOf() 메서드는 배열에서 주어진 값을 발견할 수 있는 마지막 인덱스를 반환하고, 요소가 존재하지 않으면 -1을 반환합니다. 배열 탐색은 fromIndex에서 시작하여 뒤로 진행합니다.

developer.mozilla.org


너무 꼬아서 생각하지말자.. ! 일단 내 선에서 풀어보고 리팩토링 하며 배워야겠다