
😎풀이
num 순회
1-1. 각 자리가 홀수 자리인지 짝수 자리인지 저장
1-2. 짝수와 홀수 분리하여 저장
- 짝수 및 홀수 내림차 순 정렬
- 기존 홀수 짝수 자리에 맞게 저장된 배열 이어 붙임
- 내림차 순 정렬되었으므로 가능한 가장 큰 수 반환됨됨
function largestInteger(num: number): number {
const strNum = String(num)
const even = []
const odd = []
const parities = []
for(const char of strNum) {
const num = Number(char)
const isEven = (num % 2) === 0
parities.push(isEven)
if(isEven) {
even.push(num)
} else {
odd.push(num)
}
}
const evenSorted = even.toSorted((a, b) => b - a)
const oddSorted = odd.toSorted((a, b) => b - a)
let evenIdx = 0
let oddIdx = 0
const swapped = []
for(const isEven of parities) {
if(isEven) {
swapped.push(evenSorted[evenIdx++])
} else {
swapped.push(oddSorted[oddIdx++])
}
}
return Number(swapped.join(''))
};