[링크]
https://programmers.co.kr/learn/courses/30/lessons/12910
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
[문제설명 및 입출력 예]
[내가 제출한 코드 및 풀이]
📝풀이과정
1. arr 배열을 돌면서 해당 값들을 모두 나눠야하므로, arr의 길이만큼 반복(for문)
2. arr[i] (arr의 i번째) 값을 divisor로 나눈 나머지가 0이면
3. answer에 해당 값(arr[i])을 넣는다
4. answer의 값을 정렬하는데
5. return a-b 를 이용해 오름차순 정렬한다 *return b-a 를 이용하면 내림차순 정렬
6. 나누어 떨어진 값이 없을 경우
7. answer에 -1을 넣어준다
💡 .sort() 로 정렬될 줄 알았는데, 안되더라.. 알고보니 자바스크립트에서 sort 함수는 배열을 문자열 타입으로 비교하기 때문이라고 한다.
.sort() 로 정렬이 안되었던 이유는?!
그냥 .sort()만으로는 정렬이 안 되는 걸까? 안된다.
그 이유는 자바스크립트의 sort 함수는 기본적으로 배열을 문자열(String) 타입으로 간주하고 비교하기 때문이다. 예를 들어 [b,a,c]라는 배열에 .sort()를 적용하면 [a,b,c]로 알맞게 정렬해준다. 그
런데 숫자도 마찬가지다. [90,100,110]을 sort()로 정렬하면 자바스크립트는 값을 "90" "100" "110"으로 간주하고 비교한다. 이때 "90"과 "100"을 비교 시 앞자리 9와 1을 비교, 100보다 90이 더 크다는 결론을 내린다.
*출처: https://change-words.tistory.com/64
[JavaScript] .sort(function(a, b) { return a - b; })가 작동하는 원리?
우선 이 포스팅은 내용에 대한 이해가 완전히 되지 않은 상태에서 현재까지의 이해를 정리하기 위해 작성함을 밝힌다. 관련 내용을 stackoverflow, W3Schools, MDN을 비롯해서 국내외 블로그 등 자료를
change-words.tistory.com
[다른 사람의 코드]
1
2
3
4
|
function solution(arr, divisor) {
const answer = arr.filter((num) => num % divisor === 0);
return answer.length === 0 ? [-1] : answer.sort((a, b) => a - b);
}
|
cs |
- filter 를 이용해서 삼항 연산자로 풀이
1
2
3
4
5
6
7
8
|
function solution(arr, divisor) {
var answer = [];
arr.map((o) => {
o % divisor === 0 && answer.push(o);
})
return answer.length ? answer.sort((a, b) => a - b) : [-1];
}
|
cs |
- map 을 이용해서 삼항 연산자로 풀이
'Algorithm' 카테고리의 다른 글
[프로그래머스] 문자열 내 p와 y의 개수 - JavaScript 📝 (0) | 2021.11.09 |
---|---|
[프로그래머스] 내적 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] 2016년 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] 부족한 금액 계산하기 - JavaScript 📝 (0) | 2021.11.09 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 - JavaScript 📝 (0) | 2021.11.09 |