-
[프로그래머스] 나누어 떨어지는 숫자 배열 - JavaScript 📝Algorithm 2021. 11. 9. 10:10
[링크]
https://programmers.co.kr/learn/courses/30/lessons/12910
[문제설명 및 입출력 예]
[내가 제출한 코드 및 풀이]
📝풀이과정
더보기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
[다른 사람의 코드]
1234function solution(arr, divisor) {const answer = arr.filter((num) => num % divisor === 0);return answer.length === 0 ? [-1] : answer.sort((a, b) => a - b);}cs - filter 를 이용해서 삼항 연산자로 풀이
12345678function 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