항해 프로그래머스

항해3주차 자바스크립트 프로그래머스 - 나누어 떨어지는 숫자 배열(Sort)

완두노예 2023. 1. 30. 11:31

처음 풀이

function solution(arr, divisor) {
    var answer = [];
    for(i=0; i<arr.length; i++)
    if arr % divisor === 0 {
        return arr[i]
    }
    else return -1
    return answer;
}
// arr % divisor === 0 : return arr
// arr % divisor != 0 : return -1

수정 풀이

function solution(arr, divisor) {
    var answer = [];
    for(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;
}
// for문
// arr % divisor === 0 : return arr
// arr % divisor != 0 : return -1
// return sort로 오름차순 정렬하기

다른 풀이

filter를 사용하면 배열내에서 검색할 수 있나봄

function solution(arr, divisor) {
    var answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
function solution(arr, divisor) {
    var answer = [];

    for(var i = 0; i < arr.length; ++i) {
        if(arr[i] % divisor == 0) answer.push(arr[i]);
    }

    return answer.length < 1 ? [-1] : answer.sort((a, b) => a - b);
}
function solution(arr, divisor) {
    var answer = [];
    for (var i=0; i < arr.length; i ++) 
        if (arr[i] % divisor == 0)
            answer.push(arr[i]);

    if(answer.length == 0)
        answer = [-1];
    else
        answer = answer.sort(function(a,b){return a-b});
    return answer;
}

 

Sort : 반환 값에 따른 sort()함수의 해석

  • 반환 값 < 0 : a가 b보다 앞에 있어야 한다.
  • 반환 값 = 0 : a와 b의 순서를 바꾸지 않는다.
  • 반환 값 > 0 : b가 a보다 앞에 있어야 한다.

왜 return a-b / return b-a를 해주는지 확실하게 알 수 있다.

  • numbers.sort((a, b) = > a - b); // 오름차순
  • numbers.sort((a, b) => b - a ); // 내림차순