본문 바로가기

언어/Javascript

.sort()

function solution(d, budget) {
    let count = 0;
    for (let value of d.sort()){
        budget -= value
        if (budget >= 0){
            count ++;
            continue
        }
        break
    }
    return count
}

다음과 같이 제출을 했더니, 분명 파이썬 그대로 옮겨왔는데도 틀렸다. 의심가는 곳은 딱 한 곳 뿐이었다. 정렬 반환을 조금 다르게 하나? 찾아보았다.

 

자바스크립트의 sort함수는 기본적으로 배열을 문자열로 간주하고 정렬을 진행한다. 이는 파이썬 배열안에 문자열로 가득찬 것을 정렬할 때를 생각해보면 될 것이다.

 

이렇게 되면 문제가 [199999999, 9]를 sort하면(디폴트 값은 오름차순), [199999999, 9] 그대로 도출되는 것을 확인 할 수 있다. 그렇기에 앞에 1과 9만 비교하고 9가 크다고 결론짓고 넘어간다.

 

=> 그렇기에 해결방안 : sort(()=>a-b) // a-b 오름차순, b-a 내림차순 

'언어 > Javascript' 카테고리의 다른 글

Array.prototype.join()  (0) 2022.08.12
prototype.includes(), in 연산자, hasOwnProperty(), Array.prototype.some  (0) 2022.08.12
Objects.entries(arr)  (0) 2022.08.10
객체 순회  (0) 2022.08.08
map() vs foreach()  (0) 2022.08.07