📌 문제
📌 풀이
처음 풀이 🚫
function solution(arr) {
const indexArr = [];
let result;
arr.forEach((num, idx) => {
if (num === 2) indexArr.push(idx);
})
if (indexArr.length === 0) {
result = [-1];
}
if (indexArr.length === 1) {
result = [arr[indexArr[0]]];
}
if (indexArr.length > 1) {
result = arr.slice(indexArr[0], indexArr[indexArr.length - 1] + 1);
}
return result
}
- 반복문을 돌면서 짝수인 경우의 index 값을
indexArr
에 넣는다 - indexArr 의 length 에 따른 조건문으로 배열을
slice
하여 결과를 return 한다
이 풀이는 통과를 했지만 forEach
반복문으로 인해 불필요한 연산이 발생할 수 있고, 간결함과 가독성이 떨어진다.
더 나은 풀이 💯
function solution(arr) {
// 첫 번째 2의 index 찾기
const first = arr.indexOf(2);
// 2가 없는 경우
if (first === -1) return [-1];
// 마지막 2의 index 찾기
const last = arr.lastIndexOf(2);
// 첫 번째 2부터 마지막 2까지 slice 하여 return
return arr.slice(first, last + 1);
}
indexOf()
: 배열에서 주어진 요소를 찾을 수 있는 첫 번째 index 를 반환하고, 찾을 수 없는 경우 -1 을 반환한다lastIndexOf()
: 역순으로 탐색하여, 최초로 마주치는 index 를 반환하고, 찾을 수 없으면 -1 을 반환한다
728x90
'배움 기록 > 코테 연습' 카테고리의 다른 글
[프로그래머스] 왼쪽 오른쪽 : JavaScript (0) | 2025.02.02 |
---|---|
[프로그래머스] 세로 읽기 : JavaScript (0) | 2025.01.25 |
[프로그래머스] 주사위 게임 3 : JavaScript (1) | 2025.01.19 |
[프로그래머스] 배열 만들기 4 : JavaScript (1) | 2025.01.18 |
[프로그래머스] 수열과 구간 쿼리 2 : JavaScript (0) | 2024.12.30 |
댓글