
//입력(n, slicer, num_list)
3, [1, 5, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9]
//출력
[2, 3, 4, 5, 6]
function solution(n, slicer, num_list) {
switch (n){
case 1:
return num_list.slice(0, slicer[1]+1);
case 2:
return num_list.slice(slicer[0], num_list.length+1)
case 3:
return num_list.slice(slicer[0], slicer[1]+1)
case 4:
let res = [];
for(let i = slicer[0]; i<=slicer[1]; i+=slicer[2]){
res.push(num_list[i])
}
return res
}
}
문제에서의 경우에 따른 조건
n = 1:num_list의0번 인덱스부터b번 인덱스까지 자른다.n = 2:num_list의a번 인덱스부터마지막인덱스까지 자른다.n = 3:num_list의a번 인덱스부터b번 인덱스까지 자른다.n = 4:num_list의a번 인덱스부터b번 인덱스까지c간격으로 자른다.
- 주어진 정수
n에 따라서 다른 케이스로 배열을 잘라야 하기 때문에switch-case문을 사용하였다.- 코드가 복잡해 보이지만
slicer로 주어진 정수배열을[a, b, c]로 선언하여 간단하게 사용해도 된다.slice()를 사용하여 조건에 맞게 잘라주면된다.
//입력
[12, 4, 15, 46, 38, -2, 15]
//출력
5
function solution(num_list) {
return num_list.findIndex(el=> el<0)
}
findIndex()는 판별 함수를 만족하는 첫 식별자 반환하고, 만족하는 요소가 없으면-1을 반환한다.- 배열의 앞에서부터 순회하는
findIndex()를 사용하여0보다 작은 요소를 판별함수로 넣어 처음 등장하는 음수의 인덱스를 반환한다.
//입력(arr, intervals)
[1, 2, 3, 4, 5], [[1, 3], [0, 4]]
//출력
[2, 3, 4, 1, 2, 3, 4, 5]
function solution(arr, intervals) {
const [[a1,b1],[a2,b2]] = intervals;
return [...arr.slice(a1, b1+1), ...arr.slice(a2, b2+1)];
}
주어지는 intervlas는 항상 [[a1, b1], [a2, b2]]의 꼴이다.
intervals의 구간을[[a1, b1], [a2, b2]]로 선언하고, 확장 연산자...를 사용하여 기존 배열에서 추출한 두개의 배열을 이어붙혀 새로운 배열로 만들어 반환한다.
//입력
[1, 2, 1, 4, 5, 2, 9]
//출력
[2, 1, 4, 5, 2]
function solution(arr) {
let s = arr.indexOf(2);
let e = arr.lastIndexOf(2);
return s==-1 ? [-1] : arr.slice(s, e+1);
}
indexOf()는 배열의 앞에서부터 조건에 맞는 요소의 인덱스를 반환한다.lastIndexOf()는 배열의 뒤에서부터 조건에 맞는 요소의 인덱스를 반환한다.- 위 두 개의 메서드는 조건에 맞는 결과를 찾지 못할 때
-1을 기본적으로 반환한다.- 이 두개의 메서드를 사용하여 3항연산자로
s의 값이-1이 아닌가를 검사하여[-1]을 반환하거나,s부터 e+1까지 자른 배열을 반환한다.
//입력(arr, query)
[0, 1, 2, 3, 4, 5], [4, 1, 2]
//출력
[1, 2, 3]
function solution(arr, query) {
for (let i = 0; i < query.length; i++) {
if (i % 2 === 0) {
arr = arr.slice(0, query[i] + 1);
} else {
arr = arr.slice(query[i]);
}
}
return arr;
}
문제에서의 경우에 따른 조건
- 짝수 인덱스에서는
arr에서query[i]번 인덱스를 제외하고 배열의query[i]번 인덱스 뒷부분을 잘라서 버립니다.- 홀수 인덱스에서는
arr에서query[i]번 인덱스는 제외하고 배열의query[i]번 인덱스 앞부분을 잘라서 버립니다.
query의 길이만큼 반복하면서, 인덱스 번호를 뜻하는i가 홀수인지 짝수인지 판별한다.- 짝수라면
arr을0부터 query[i] + 1까지 자른 결과를arr에 저장한다.- 홀수라면
arr을query[i]부터끝인덱스 까지 잘라낸 결과를arr에 저장한다.