[JS][프로그래머스]나누어 떨어지는 숫자 배열
Algorithm/Programmers

[JS][프로그래머스]나누어 떨어지는 숫자 배열

문제 번호

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하

programmers.co.kr

 

 

알고리즘 분류

 

 

문제 풀이

 문제의 내용은 어려운게 없었다. 문제에서 주어지는 숫자들을 모두 검사하여 문제에서 주어진 또 다른 숫자로 나누어 떨어지는지만 검사하면 된다.

 

이때 Array 프로토타입인 sort 메서드를 이용하였는데 sort 함수의 기본 비교조건은 배열의 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬된다고한다.

 처음엔 이걸 몰라서 그냥 sort() 만 사용했더니 오름차순으로 배열이 이루어지지 않아서 당황했다. sort 함수가 어떻게 요소들을 비교할지 기술해주어야 한다.

function solution(arr, divisor) {
    var answer = [];
    
    answer = arr.filter(x => parseInt(x%divisor) === 0).sort((a,b)=>a-b);    
    
    if(answer.length === 0)
        answer.push(-1);
    
    return answer;
}

 

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

 

 이 문제를 풀때도 sort 메서드에 대해서 잘 알고 사용하는것이 좋다고 생각한다.

 

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱

programmers.co.kr

 

C++에서는 compare 함수를 bool 타입으로 선언해서 단순하게 return a<b 같은 형식으로 작성하였는데 그 기억이 남아서 JS에서도 같은 방법으로 사용하다가 시간을 오래썻다.

 

++ sort()메서드를 통해서 반환되는 결과물은 배열이다. 새로운 배열이 생성되는것이 아니라 원 배열이 정렬된다.

특이사항