728x90
# 문제
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
# 답안
// 1. 입력: 자연수 배열 arr, 자연수 divisor
// 2. 출력: divisor로 떨어지는 arr의 element를 모은 배열(오름차순) , 없으면 -1
// < 방법 1 : 반복문 돌리기 >
// answer = []
// 반복문 돌릴건데,
// if (arr[i] % divisor === 0) 이면, answer.push(arr[i])
// 다 돌리고나서 if (answer === []) 이면, return -1, 아니면 return answer(오름차순정렬해서)
function solution(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);
}
// < 방법 2 : filter 사용 >
// filter로 arr의 element 중 (divisor == 0)인 것만 남기기
function solution(arr, divisor) {
let answer = arr.filter((v) => v % divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a, b) => a - b);
}
# 인사이트
// 배열이 비어있는지 확인할 때 answer === [] 이렇게 쓰면 안됨.
// 왜냐면 빈 배열을 가리리키는 두개의 배열이 (빈 배열을 생성할 때 마다 새로운 객체가 생성 되기 때문에) 서로 다른 객체이기 때문이다.
// 따라서 배열을 비어 있는지 확인 할 때에는 길이를 비교 하는 것이 올바른 방법임 // answer.length == 0
728x90
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 105 - 핸드폰 번호 가리기) (0) | 2024.05.10 |
---|---|
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 104 - 콜라츠 추측) (0) | 2024.05.10 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 102 - 없는 숫자 더하기) (0) | 2024.05.09 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 101 - 음양 더하기) (0) | 2024.05.09 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 100 - 서울에서 김서방 찾기) (0) | 2024.05.09 |