문제
주어진 정수 배열 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
너무 꼬아서 생각하지말자.. ! 일단 내 선에서 풀어보고 리팩토링 하며 배워야겠다
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javascript 배열내 길이가 같은 문자열이 가장 많은 갯수 (0) | 2023.08.20 |
---|---|
[Lv0] js 정수 배열에서 숫자 n이 총 몇 개 들어있는지 (0) | 2023.08.18 |
[Lv0] js for ...of 를 사용한 수열과 쿼리 (0) | 2023.08.10 |
[Lv0] js 정수 배열 홀짝 여부 판단하여 1로 만들기 (0) | 2023.08.05 |
[Lv 0] js 해당 인덱스 문자열 지우기 (0) | 2023.08.03 |