본문 바로가기

프로그래머스/구현

[구현] 프로그래머스 '나누어 떨어지는 숫자 배열' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12910

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 설명

만약 배열의 값이 divisor로 나누어 떨어진다면 반환할 배열에 push한다.

만약 반환할 배열(answer)에 아무것도 없으면, 즉 어떤 것도 나누어떨어지지 않아 길이가 0이면 -1을 리턴한다.

이 문제를 풀 때 조심해야할 부분은 정렬이다.

내장된 sort메소드를 사용하면 의도치 않은 결과가 나올 수 있기 때문이다.

만약 2와 10을 비교해야할 때, sort를 사용한다면 10이 2보다 작다고 나온다.

이는 '10'을 문자열로 인식하여 '1' 을 보고 2보다 작다고 판단되기 때문이다.

자바스크립트에서 정렬을 해줄 때에는 인접한 두 수의 '차'를 가지고 판단한다.

해당 코드는 오름차순을 해주는 코드이다.

    answer.sort(function (a, b) {
        return a - b;
    });

내림차순 코드는 이렇다. 화살표함수를 사용해주면 더 간결하게 표현 할 수 있다.

arr.sort((a, b) => b - a);

해당 코드를 사용하여 오름차순 정렬을 마치면 answer를 리턴해준다.

3. 코드

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(function (a, b) {
        return a - b;
    });

    return answer;
}
반응형