๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๊ฐ€์žฅ ํฐ ์ˆ˜ (42726)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ€์žฅ ํฐ ์ˆ˜

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ

programmers.co.kr

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ฒ˜์Œ์—๋Š” ์ˆœ์—ด ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ  Math.max()๋ฅผ ํ†ตํ•ด ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋ ค ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ณ  ๋Ÿฐํƒ€์ž„์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค๋ฅธํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ’€์—ˆ๋‹ค.

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ์ตœ๋Œ€๊ฐ’์ด ๋งŒ๋“ค์–ด ์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ๋‹ค.

numbers = [23, 232, 1, 649, 9, 91];

numbers.sort(strSort)
// strSort๋Š” ์•„๋ž˜ ์ฝ”๋“œ ์ฐธ๊ณ 

// 23223 23232
// 1232 2321
// 6491 1649
// 649232 232649
// 64923 23649
// 9232 2329
// 923 239
// 9649 6499
// 9123 2391
// 91649 64991
// 919 991
// number === [9, 91, 649, 23, 232, 1]โ€‹

๊ณผ์ •์€ a, b๋ฅผ ๋ฌธ์ž์—ดํ™” ํ•˜์—ฌ ๋”ํ•˜๊ณ  b - a๋ฅผ ํ†ตํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
("23" + "232" = "23232", "232" + "23" = "23223"), ("23223" - "23232" = -9)

 

 

 

// ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ "๋ฌธ์ž์—ด"๋กœ ๋ฐ”๊ฟ”์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋œ๋‹ค.

function solution(numbers) {
    var answer = ""
    answer = numbers.sort(strSort);
    
    return answer[0] === 0 ? "0" : answer.join("")
}

const strSort =  (a,b) =>{
    const sumA = a.toString() + b.toString()
    const sumB = b.toString() + a.toString()
    return sumB - sumA
}