https://programmers.co.kr/learn/courses/30/lessons/12910
let arr = [36, 1, 2, 3];
let divisor = 2;
function solution1(arr, divisor) {
let answer = [];
for(let i = 0; i < arr.length; i++){
if(arr[i]%divisor == 0) answer.push(arr[i]);
}
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
console.log(solution1(arr, divisor)); // [2, 36]
- 나누어떨어지는 배열을 담기 위한 빈 배열을 answer에 할당한다.
- for문을 통해 arr.length보다 작을 때 반복시킨다.
- if문을 사용하여 arr[i]를 divisor로 나누었을 때 나머지가 0인 경우 push()메서드를 활용하여 나누어 떨어지는 배열 요소를 answer에 추가한다.
- 나누어떨어지는 요소가 하나도 없는 경우 -1을 리턴해야하므로 삼항연산자를 활용하여 answer.length가 0인 경우 [-1]을 리턴하는 조건을 만든다.
let arr = [36, 1, 2, 3];
let divisor = 2;
function solution2(arr, divisor) {
var answer = arr.filter(v => v%divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
console.log(solution2(arr, divisor)); // [2, 36]
- filter()메서드를 통해 조건을 통과하는 배열 요소들만을 모아 새로운 배열을 생성한다.
- 조건을 통과하는 배열이 존재하지 않아 배열이 비어있는 경우 삼항연산자를 활용하여 [-1]을 리턴한다.
- 배열이 비어있지 않은 경우는 담긴 배열 요소들을 sort()메서드를 활용하여 오름차순으로 리턴한다.
let arr = [36, 1, 2, 3];
let divisor = 2;
function solution3(arr, divisor) {
var answer = [];
arr.map(a => {a % divisor === 0 && answer.push(a);})
return answer.length ? answer.sort((a, b) => a - b) : [-1];
}
console.log(solution3(arr, divisor)); // [2, 36]
- 나누어떨어지는 배열을 담기 위한 빈 배열을 answer에 할당한다.
- map()메서드를 활용한다. 또한 논리연산자를 활용하여 조건을 만족하는 경우 빈 배열 answer에 해당 배열요소가 push되도록 한다.
- 0이 아닌 경우 true이므로 answer.length로 작성하여 조건식을 만들고 조건을 통과하는 경우 오름차순으로 배열을 정렬한다.
- 조건을 통과하지 못하는 경우 [-1]을 리턴한다.