728x90
https://programmers.co.kr/learn/courses/30/lessons/12910
접근
배열 내의 숫자 중 divisor로 나누어서 떨어지는 숫자를 새로운 배열에 저장하도록 하였다.
이후 배열이 비어있을 때는 -1을 추가하고 오름차순으로 정렬한다.
구현
- 먼저 map 함수를 통해 숫자들을 하나씩 filter로 전달할 수 있도록한다.
- 해당 수가 나누어 떨어지는지 isPossible로 검사하여 나누어 떨어진다면 해당 숫자를 result에 추가한다.
- filter에 의해 반환된 배열이 isEmpty()로 검사하여 비어있다면 -1을 추가한다.
- 이후 오름차순으로 정렬한다.
function* map(numbers) {
for(let number of numbers) yield number;
}
function filter(divisor, numbers) {
let result = [];
for(let number of numbers) {
if(isPossible(number, divisor)) result.push(number);
}
return result;
}
function isPossible(a, b) {
return a >= b && (a % b === 0);
}
function isEmpty(iter) {
return iter.length === 0;
}
function solution(arr, divisor) {
let answer = [];
answer = filter(divisor, map(arr));
if(isEmpty(answer)) answer.push(-1);
answer.sort((a, b) => a - b);
return answer;
}
'프로그래밍 > 함수형 프로그래밍' 카테고리의 다른 글
[함수형 프로그래밍] if문과 for문 (0) | 2021.11.05 |
---|---|
[함수형 프로그래밍 연습하기] 프로그래머스 Lvel1 - 문자열 내 p와 y의 개수 (0) | 2021.08.09 |
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 제일 작은 수 제거하기 (0) | 2021.08.08 |
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 완주하지 못한 선수 (0) | 2021.08.07 |
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 핸드폰 번호 가리기 (0) | 2021.08.06 |