[LeetCode] 2231. Largest Number After Digit Swaps by Parity

Chobby·3일 전
1

LeetCode

목록 보기
692/710

😎풀이

  1. num 순회
    1-1. 각 자리가 홀수 자리인지 짝수 자리인지 저장
    1-2. 짝수와 홀수 분리하여 저장
  2. 짝수 및 홀수 내림차 순 정렬
  3. 기존 홀수 짝수 자리에 맞게 저장된 배열 이어 붙임
  4. 내림차 순 정렬되었으므로 가능한 가장 큰 수 반환됨됨
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(''))
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글