728x90
문제)
코드)
function solution(arr, divisor) {
var answer = [];
for(let i = 0; i < arr.length; i++)
{
if(arr[i] % divisor === 0)
{
answer.push(arr[i]);
}
}
if(answer.length == 0)
{
answer.push(-1);
}
answer.sort((a,b) => a - b);
return answer;
}
코드 설명)
우선 arr을 다 돌아가면서 나눠지는 수를 찾아야하기 때문에 for문 arr.length만큼 돌려서 조건이 arr[i] 가 나누는수 divisor에 나눴을 때 0이되면 나눠지는 수 이기 때문에 해당하는 정보 arr[i]를 answer에 push해주면 answer[0]부터 쌓이기 시작한다.
위의 for문을 다돌리면 해당하는 수를 다 찾은 것이기 때문에 answer의 길이 length가 0이면 결과 값이 없으므로 리턴하라고 한 -1을 넣어주고, 결과 값을 오름차순으로 정렬해야 하기 때문에 answer.sort((a, b) => a - b);를 하면 a에서 b로 즉 오름차순 정렬시키면 answer이 오름차순으로 정렬된다. 그 후 answer을 return해주면 해결할 수 있다.
다른사람의 풀이)
function solution(arr, divisor) {
var answer = arr.filter(v => v%divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
for문을 이용해서 사용했던 것을 filter로 아주 쉽게 풀이하셨다. 결국 for문을 이용해도 filter처럼 끝까지 돌려야하기 때문에 for문을 사용해도 해당하는 for문을 끝까지 돌려서 찾아야한다면, filter를 사용하는 것이 더 깔끔할 것 같다. return 할때도 삼황연산자를 사용하여서 쉽게 length의 길이가 0일때 -1 아닐 때 오름차순 정렬을 return해줘서 2줄로 정리를 하였다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS]직사각형 별찍기 (0) | 2024.05.22 |
---|---|
[프로그래머스/JS] 행렬의 덧셈 (0) | 2024.05.21 |
[프로그래머스/JS] 약수의 개수와 덧셈 (0) | 2024.05.17 |
프로그래머스) 콜라츠 추측 -JS (0) | 2024.05.07 |
프로그래머스) 정수 내림차순으로 배치하기 -JS (0) | 2024.05.07 |