😎풀이

  1. 특정 수에서 가장 큰 자릿수를 반환하는 헬퍼 함수 정의
  2. nums의 각 수에서 가장 큰 자릿수를 모두 확인
  3. nums 2중 순회
    3-1. 가장 큰 자릿수가 동일한 두 수 탐색
    3-2. 두 수의 합을 통해 최댓값 갱신
  4. 탐색된 최대 합 반환
function maxSum(nums: number[]): number {
    const n = nums.length
    let max = -1
    const maxDigits = nums.map(getMaxDigit)
    for(let i = 0; i < n - 1; i++) {
        for(let j = i + 1; j < n; j++) {
            if(maxDigits[i] !== maxDigits[j]) continue
            const curSum = nums[i] + nums[j]
            max = Math.max(max, curSum)
        }
    }
    return max
};

function getMaxDigit(num: number) {
    const digits = []
    while(num) {
        digits.push(num % 10)
        num = Math.floor(num / 10)
    }
    return Math.max(...digits)
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글