[Leetcode] 1513. Number of Substrings With Only 1s

RexiaN·2025년 11월 18일

1의 부분배열을 전부 구해야하는 문제. 1의 연속된 길이를 구한 뒤 등차수열 기본공식을 적용하면 된다. 숫자가 너무 큰 경우 나누라는 지시가 있으므로 MOD 변수로 나눈 나머지를 더해주면 손쉽게 해결 가능하다.

const MOD = 1000000007;

function numSub(s: string): number {
    let len = 0
    let sum = 0

    for (let i = 0; i < s.length; i++) {
        if (s[i] === '1') {
            len += 1
        } else {
            if (len !== 0) {
                sum += (plus(len) % MOD)
                len = 0
            }
        }
    }

    if (len !== 0) {
        sum += (plus(len) % MOD)
    }

    return sum
};

function plus(n: number) {
    return n * (n + 1) / 2
}

profile
Don't forget Rule No.1

0개의 댓글