문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr는 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다
내가 푼 문제 풀이
function solution(arr, divisor) {
let answer = [];
answer = arr.filter((item)=>{
return item % divisor == 0
})
// 배열함수 filter()를 사용해서
// 조건이 참인 item을 reutrn 한다.
// answer 배열에 넣는다.
if(answer == ""){
answer.push(-1)
}
// if문을 사용해서 answer 배열이 비어 있다면
// answer 배열에 -1을 push 한다.
return answer.sort((a, b) => a - b);
// 자바스크립트에서 배열을 정렬하기 위해서는 sort() 함수를 사용하는데
// 숫자가 생각대로 정렬 되지 않아서 사용했다.
}
return answer.sort((a, b) => a - b) 코드 설명
: 자바스크립에서 배열을 정렬 할 때 기본적으로 요소를 문자열로 변환한 다음 UTF-16 코드 포인트를 비교하여 요소를 정렬한다. 그렇기 때문에 숫자의 경우 예기치 않은 순서로 발생 할 수 있다.
따라서 기본 동작을 변경하고 Array.sort 메소드에 함수를 전달한다. 항상 한 번에 두 요소를 비교하여 작동한다.
결과가 0보다 작으면 a를 먼저 표시하고, 결과가 0보다 크면 b를 먼저 표시한다.
원본 배열인 number가 정렬이 되고 리턴하는 값 또한 원본 배열인 number를 가르키고 있는 것이다.
https://hohoya33.tistory.com/139
다른 사람이 푼 문제 풀이
function solution(arr, divisor) {
let answer = [];
answer = arr.filter((item)=>{
return item % divisor == 0
})
// 배열함수 filter()를 사용해서
// 조건이 참인 item을 reutrn 한다.
// answer 배열에 넣는다.
return answer.length == 0 ? [-1] : answer.sort((a, b) => a - b);
// 자바스크립트에서 배열을 정렬하기 위해서는 sort() 함수를 사용하는데
// 숫자가 생각대로 정렬 되지 않아서 사용했다.
}
-> return에서 삼항연산자를 사용해서 조건에 answer.length가 0일 경우 참 결과에 -1을 담고 있는 배열을 넣고
거짓 결과에는 answer를 sort() 메소드를 사용하여 오름차순 한 결과를 넣는다.
https://programmers.co.kr/learn/courses/30/lessons/12910
'항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
2일차 → 내적(forEach(), reduce()) (0) | 2021.11.09 |
---|---|
2일차 → x만큼 간격이 있는 n개의 숫자(Array 생성자 함수, fill(), map()) (0) | 2021.11.09 |
2일차 → 행렬의 덧셈(배열-push()) (0) | 2021.11.09 |
2일차 → 핸드폰 번호 가리기(replace(), 정규식 표현) (0) | 2021.11.09 |
2일차 → 문자열 내 p와 y의 개수(toLowerCase(), 삼항연산자, toUpperCase(), split()) (0) | 2021.11.09 |
댓글