leetcode

179. Largest Number Javascript

냠냠맨 2023. 1. 16. 08:00

⚡문제정보

sort를 잘 활용하면 풀 수 있을 문제같아 보이는데

sort가 제 마음대로 잘.. 동작을 안해서 조금 참고를 통해 풀었습니다.


🔍나의 풀이

var largestNumber = function(nums) {
    
    if(!nums.filter(ele => ele != 0).length) return '0'
    
    nums.sort( (a,b) => {
        let as = a.toString()
        let bs = b.toString()
        return parseInt(as + bs) > parseInt(bs + as) ? -1 : 1
    })
    
    return nums.join('') 
};

만약 모든 요소가 0인 경우엔 '0'을 리턴해줍니다.

그렇지않으면 [0,0]같은 케이스에서 '00'이 리턴되기때문이에요

 

nums를 sort하는데 답은 정상적인 더하기가 아니라

문자열 더하기처럼 이어붙여줘야하니까 a,b를 toString을 통해 문자열로 만들어줍니다.

문자열로 만들어준뒤 as + bs를 한것과 bs + as를 한것의 값을 숫자로 비교해줍니다.

만약 as + bs가 더 크다면 -1을 리턴합니다.

 

이번에 찾아보면서 알게된건데 sort 함수는 a - b가 음수일때는 자리를 바꾸지 않고

a - b가 양수면 자리를 바꿔주는 형식으로 동작하는거군요!

 

그래서 저 삼항연산자에 -1 : 1이 아니라 - 125 : 214 이런식으로 리턴값을 줘도 똑같이 동작합니다.

 

반응형