😎풀이

  1. 대칭 수 판별 헬퍼 함수 정의
    1-1. 수를 각 자릿수로 분리
    1-2. 자릿수가 홀수라면, 대칭 수가 될 수 없음
    1-3. 전체 수의 절반의 요소를 합한 결괏값이 나머지 결괏값과 같은지 동등비교 후 결과 반환
  2. low부터 high까지의 수 순회
    2-1. 현재 수가 대칭 수 라면, 카운트
  3. 전체 카운트 반환
function countSymmetricIntegers(low: number, high: number): number {
    let count = 0
    for(let i = low; i <= high; i++) {
        if(isSymmetric(i)) count++
    }
    return count
};

function isSymmetric(num: number) {
    const digits = []
    while(num) {
        digits.push(num % 10)
        num = Math.floor(num / 10)
    }
    if((digits.length % 2) === 1) return false
    const halfSize = digits.length / 2
    const total = digits.reduce((acc, cur) => acc + cur, 0)
    const half = total / 2
    let sum = 0
    for(let i = 0; i < halfSize; i++) {
        sum += digits[i]
    }
    return half === sum
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글