😎풀이

  1. 12를 토글하며 번갈아 입력
  2. 반복 횟수는 마법 문자열의 i번째 요소만큼
  3. n개의 마법 문자열이 모였을 때, 그 중 1의 개수 반환
function magicalString(n: number): number {
    let nextIsOne = true
    let magicStr = '122'
    for(let i = 2; magicStr.length < n; i++) {
        const repeat = magicStr[i]
        const curChar = nextIsOne ? '1' : '2'
        magicStr += curChar.repeat(Number(repeat))
        nextIsOne = !nextIsOne
    }
    let ones = 0
    const sliced = magicStr.slice(0, n)
    for(const char of sliced) {
        if(char === '1') ones++
    }
    return ones
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글