[Leetcode] 1317. Convert Integer to the Sum of Two No-Zero Integers

RexiaN·2025년 9월 8일

2 <= n <= 10^4 사이의 숫자가 주어진다. 이 숫자를 만들 수 있는 두 수 a 와 b 를 [a,b] 형태로 반환하면 된다. 다만 a 와 b 모두 0 이라는 숫자가 포함이 되면 안된다.

나는 입력받은 수의 자릿수 - 1 만큼 정수를 반복해서 숫자를 만들었다. 가령 n 이 10,000 이라면 1,111 을 만들어서 빼면 a = 1,111, b = 8,889 가 나온다. 하지만 n 이 11,111 등 뺄셈에서 0 이 나올 수도 있으므로 1111 -> 2222 -> 3333 식으로 숫자를 증가시켜가며 뺼셈을 해 0이 없는 두 수 를 만들었다.

function getNoZeroIntegers(n: number): number[] {
    const c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    const lengthOfN = n.toString().length

    for (let i = 1; i < c.length; i++) {    
    const aNum = Number(c[i].toString().repeat(Math.max(lengthOfN - 1, 1)))
    const bNum = n - aNum

        if (aNum.toString().includes('0') || bNum.toString().includes('0')) {
            continue
        } else {
            return [aNum, bNum]
        }
    }
};

나는 3ms 가 걸렸는데 0ms 만에 푼 사람들이 더 많았다.

AI 에게 물어본 결과, 모수 n 의 크기가 상대적으로 작기 때문에 모듈로 연산을 하는 편이 더 효율적이었을 것이라는 답변을 받았다. 아무래도 형변환이 자주 일어나다보니 모듈로 연산에 비해 시간이 더 걸렸던 것 같다.

profile
Don't forget Rule No.1

0개의 댓글