2일차 → 나누어 떨어지는 숫자 배열(filter(), sort())
본문 바로가기
항해 중/2주차 알고리즘(프로그래머스)

2일차 → 나누어 떨어지는 숫자 배열(filter(), sort())

by 은돌1113 2021. 11. 9.

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

제한사항

- arr는 자연수를 담은 배열입니다.

- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.

- divisor는 자연수입니다.

- array는 길이 1 이상인 배열입니다

 

내가 푼 문제 풀이

function solution(arr, divisor) {
    
    let answer = [];

    answer = arr.filter((item)=>{
      return item % divisor == 0
    })
    // 배열함수 filter()를 사용해서
    // 조건이 참인 item을 reutrn 한다.
    // answer 배열에 넣는다.

    if(answer == ""){
      answer.push(-1)
    }
    // if문을 사용해서 answer 배열이 비어 있다면
    // answer 배열에 -1을 push 한다.

    return answer.sort((a, b) => a - b);
    // 자바스크립트에서 배열을 정렬하기 위해서는 sort() 함수를 사용하는데
    // 숫자가 생각대로 정렬 되지 않아서 사용했다.
}

 

return answer.sort((a, b) => a - b) 코드 설명

: 자바스크립에서 배열을 정렬 할 때 기본적으로 요소를 문자열로 변환한 다음 UTF-16 코드 포인트를 비교하여 요소를 정렬한다. 그렇기 때문에 숫자의 경우 예기치 않은 순서로 발생 할 수 있다.

 

따라서 기본 동작을 변경하고 Array.sort 메소드에 함수를 전달한다. 항상 한 번에 두 요소를 비교하여 작동한다.

결과가 0보다 작으면 a를 먼저 표시하고, 결과가 0보다 크면 b를 먼저 표시한다.

 

원본 배열인 number가 정렬이 되고 리턴하는 값 또한 원본 배열인 number를 가르키고 있는 것이다.

 

https://hohoya33.tistory.com/139

 

javascript 배열 정렬 방법 (오름차순, 내림차순)

javascript에서 배열을 정렬하기 위해서는 sort() 함수를 사용합니다. 그러나 숫자는 생각대로 정렬되지 않습니다. 자바스크립트에서 배열을 정렬 할 때 기본적으로 요소를 문자열로 변환합니다. 그

hohoya33.tistory.com

 

다른 사람이 푼 문제 풀이

function solution(arr, divisor) {
    
    let answer = [];

    answer = arr.filter((item)=>{
      return item % divisor == 0
    })
    // 배열함수 filter()를 사용해서
    // 조건이 참인 item을 reutrn 한다.
    // answer 배열에 넣는다.

    return answer.length == 0 ? [-1] : answer.sort((a, b) => a - b);
    // 자바스크립트에서 배열을 정렬하기 위해서는 sort() 함수를 사용하는데
    // 숫자가 생각대로 정렬 되지 않아서 사용했다.
}

-> return에서 삼항연산자를 사용해서 조건에 answer.length가 0일 경우 참 결과에 -1을 담고 있는 배열을 넣고

거짓 결과에는 answer를 sort() 메소드를 사용하여 오름차순 한 결과를 넣는다.

 

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

 

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

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

programmers.co.kr

 

댓글