문제
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
arr | divisor | return |
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3, 2, 6] | 10 | [-1] |
문제풀이
for문을 이용해서 작성한 처음 풀이인데 자꾸 오류가 났다.
작성한 else if문 대로라면 divisor로 나누어떨어지는 수가 없을경우 answer은 빈 배열을 배출한다.
그걸 이용해서 for문을 돌고나와서 배열이 비었을경우 -1을 return하도록 수정하고 그 값을 sort하도록 했다.
그런데 이상한 결과가 계속 나왔다.
sort를 하면 기본적으로 오름차순으로 배열되어야하는데 5보다 10을 먼저 두는것이다.
알아보니 sort는 오름차순 배열 하기전 문자열로 바꾸는 속성이 있다고 한다.
그래서 10의 첫자리인 1이 5보다 작기때문에 5보다 앞에 두는거였다.
answer.sort((a,b) => a-b) 라고 수정하니 정상적으로 값을 배출하는것을 볼수있었다.
정렬 강의 들으면서 얼핏 배운거같은데 왜이리 초면같은지,, ^^
다른풀이
filter와 삼항연산자를 이용해 굉장히 짧게 풀어낸 모습...
멋지다..!
'코테' 카테고리의 다른 글
프로그래머스 JavaScript - 문자열 다루기 기본 (0) | 2024.01.26 |
---|---|
프로그래머스 JavaScript - 약수의 개수와 덧셈 (0) | 2024.01.25 |
프로그래머스 JavaScript - 제일 작은 수 제거하기 (0) | 2024.01.19 |
프로그래머스 javaScript - 서울에서 김서방 찾기 (0) | 2024.01.12 |
프로그래머스 javascript - 두 정수 사이의 합 (0) | 2024.01.11 |