⚡문제정보
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 이런식으로 리턴값을 줘도 똑같이 동작합니다.
반응형
'leetcode' 카테고리의 다른 글
561. Array Partition Javascript (0) | 2023.01.16 |
---|---|
452. Minimum Number of Arrows to Burst Balloons Javascript (1) | 2023.01.16 |
334. Increasing Triplet Subsequenc (0) | 2023.01.16 |
438. Find All Anagrams in a String Javascript (0) | 2023.01.12 |
139. Word Break 자바스크립트 DP (1) | 2023.01.08 |