[프로그래머스] 나누어 떨어지는 숫자 배열 (JavaScript)
https://school.programmers.co.kr/learn/courses/30/lessons/12910
1. forEach() 사용 풀이
function solution(arr, divisor) {
let answer = [];
arr.forEach((e) => {
if (e % divisor === 0) answer.push(e);
});
answer.length === 0 ? answer.push(-1) : answer.sort((a, b) => a - b);
return answer;
}
코드 해설
- 정답을 담아줄 빈 배열 answer를 선언해줍니다.
- 자연수가 담긴 arr의 요소를 forEach()를 통해 하나씩 순회하며, 현재 처리 중인 요소를 뜻하는 인자 e를 divisor로 나누어 나머지가 0인 경우 answer에 값을 넣어줍니다.
- 삼항연산자를 통해 forEach()문 종료 후 만약 나누어 떨어지는 수가 없어 배열이 비어있으면(배열 길이가 0이면) answer에 -1 을 넣어주고, 값이 있으면 answer 배열을 sort() 메서드의 비교 함수로 a - b 를 넣어주어 오름차순으로 정렬해줍니다.
- sort() 메서드는 배열을 문자열로 변환한 후 유니코드 코드 포인트 순서로 정렬하므로 숫자 정렬이나 사용자 지정 정렬 순서와는 다를 수 있습니다.
- 따라서 숫자 배열을 올바르게 정렬하기 위해서는 정렬 순서를 지정하는 비교 함수를 제공해야 합니다.
- 보통 오름차순 정렬 시에는 비교 함수로 a-b, 내림차순 정렬 시에는 b-a를 넣어줍니다.
* 더 자세한 내용은 sort() 관련 글로 첨부 예정 *
2. filter() 사용 풀이
function solution(arr, divisor) {
let answer = []
arr.sort((a,b)=>(a-b))
answer = arr.filter(e=> e % divisor === 0)
if (answer.length === 0) {
answer.push(-1);
}
return answer;
}
코드 해설
- 정답을 담아줄 빈 배열 answer를 선언해줍니다.
- sort() 메서드의 비교 함수로 a - b 를 넣어주어 arr를 오름차순으로 정렬해줍니다.
- filter() 메서드를 통해 divisor로 나누어 나머지가 0인 요소들을 answer에 넣어줍니다.
* filter 관련 글 첨부 예정 *
- 앞서 정렬한 후 배열을 생성하였기 때문에 배열 길이가 0인지 아닌지만 판별하여, 0일때 answer배열에 -1값을 넣어 리턴해줍니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이상한 문자 만들기 (JavaScript) (0) | 2023.06.20 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 (JavaScript) (0) | 2023.06.20 |
[프로그래머스] 가운데 글자 가져오기 (JavaScript) (0) | 2023.06.18 |
[프로그래머스] 음양 더하기 (JavaScript) (1) | 2023.06.14 |
[프로그래머스] 문자열 내 p와 y의 개수 (JavaScript) (0) | 2023.06.14 |