정수 n
이 매개변수로 주어질 때, n
이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
n
≤ 100n | result |
---|---|
10 | [1, 3, 5, 7, 9] |
15 | [1, 3, 5, 7, 9, 11, 13, 15] |
입출력 #1
입출력 #1
const solution = (n) => {
let arr = [];
for(let i = n; i > 0; i-=1) {
if(i % 2 === 1) {
arr.push(i);
}
}
return arr.reverse();
}
/* 내가 처음 작성한 코드이다.
1. 빈 배열 arr을 만든다 .
2. for문을 통해 n부터 1까지 1씩 감소하며 반복문을 돌려준다.
3. arr.push를 통해서 2로 나누었을때 나머지가 1인경우(홀수) arr에 추가하도록 해준다.
4. arr.reverse()를 통해서 순서롤 뒤집어준다.
*/
const solution = (n) => {
let arr =[];
for(let i = 1; i <= n; i+=2) {
arr.push(i);
}
return arr;
}
/*
SOLUTON1과 비슷한 코드인데 for문 안에 2씩 더해주어 홀수만 나오게끔 작성하여 if문을 생략할 수
있도록 작성한 코드이다. 이 방법은 생각도 못했었는데 다른분의 풀이를 보다가 공부할겸 가져와봤다.
*/
function solution(n) {
return Array(n).fill(1).map((v, i)=> v + i).filter(v => v % 2 === 1);
}
/*
이것도 다른분의 풀이인데 신기해서 가져와봤다.
1. Array(n) n개의 요소를 갖는 Array를 만들어준다.
2. fill(1) fill메서드를 통해서 Array의 요소를 1로 채워준다.
3. map((v, i) => v + i) 각 요소에 인덱스 값을 더하여 새로운 배열을 생성한다.
인덱스 값은 0부터 시작하므로 첫 번째 요소에는 인덱스 값인 0이 더해지고 두 번째 요소에는
인덱스 값인 1이 더해지는 식으로 진행된다.
따라서 위의 예시에서 생성된 배열은 [1+0=1 , 2+0=2 , ... , n-2+0=n-2 , n-2+0=n-2]와 같다.
인덱스 값인 0이 더해열은 [1+0=1 , 2+0=2 , ... , n-2+0=n-2 , n-2+0=n-2]와 같다.
4. filter(v=>v%2===1)는 홀수만 필터링하여 새로운 배열을 반환한다.
여기서 % 연산자는 나머지를 구하는 연산자이다. v%2===1 조건은 v가 홀수일 때만 true이다.
따라서 최종적으로 반환되는 배열은 주어진 범위 내에서 홀수만 담고 있게 된다.
*/