
//입력(num_list, n)
[2, 1, 6], 3
//출력
[6]
function solution(num_list, n) {
return num_list.slice(n-1)
}
num_list를slice()를 사용하여n-1부터 마지막 원소까지 자른 결과를 리턴한다.
//입력(num_list, n)
[2, 1, 6], 1
//출력
[1, 6, 2]
function solution(num_list, n) {
return [...num_list.slice(n), ...num_list.slice(0,n)]
}
num_list.slice(n):num_list를n부터 마지막 까지 자른다.num_list.slice(0, n):num_list를0부터n까지 자른다.- 이 두개를 확장연산자
...를 사용하여 두개의 위치를 바꾼 후 반환한다.
//입력
["u", "u", "l", "r"]
//출력
["u", "u"]
function solution(str_list) {
for (let i = 0; i < str_list.length; i++) {
if (str_list[i] === "l") return str_list.slice(0, i);
if (str_list[i] === "r") return str_list.slice(i + 1);
}
return [];
}
문제 설명이 애매하게 돼 있으므로 잘 생각해 봐야한다.
str_list에서"l"과"r"중 먼저 나오는 문자열이
"l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를 반환"r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 반환
str_list의 전체 배열을 순회하는 반복문을 작성한다- 반복문 안에서 처음 등장한 문자가
l인지r인지 판별한다.(두개의 조건문으로 먼저 만족하는 조건의 조건문이 실행되기 때문에 상관없다.)- 만약 반복문 안에서 조건을 만족하는 상황을 찾지 못하였을 땐
[]를 반환한다.
//입력(num_list, n)
[2, 1, 6], 1
//출력
[2]
function solution(num_list, n) {
return num_list.slice(0,n)
}
slice()메서드를 사용하여 잘라낼 시작 인덱스와 마지막 인덱스를 각각0과n으로 넣어주면 첫번째 원소부터 n번째까지 잘라낸 결과를 반환할 수 있다.
//입력(num_list, n)
[4, 2, 6, 1, 7, 6], 2
//출력
[4, 6, 7]
function solution(num_list, n) {
return num_list.filter((_, i) => !(i % n))
}
filter()메서드를 사용하여,i를n으로 나누었을 때, 나누어 떨어지는 경우에만 필터링 조건을 만족시키게 된다.- 즉,
n의 배수인 인덱스 만 필터링하여 반환한다.
(filter에서 사용된_는 생략의 기호이다. 즉, 현재 요소를 고려하지않고 인덱스만 사용하겠다는 뜻이다. )