Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

Magical String:JavaScript의 질문

<시간/>

문제

마법의 문자열 str은 '1'과 '2'로만 구성되며 다음 규칙을 따릅니다. -

문자열 str은 문자 '1'과 '2'의 연속 발생 횟수를 연결하면 문자열 str 자체가 생성되기 때문에 마법과 같습니다.

문자열 str의 처음 몇 요소는 다음과 같습니다. -

str = "1221121221221121122……"

str에서 연속적인 '1'과 '2'를 그룹화하면 -

1 22 11 2 1 22 1 22 11 2 11 22 ......

각 그룹에서 '1' 또는 '2'의 발생은 -

1 2 2 1 1 2 1 2 2 1 2 2 ......

위의 발생 순서가 문자열 자체임을 알 수 있습니다.

입력으로 정수 num이 주어지고 마법 문자열 str의 첫 번째 num 숫자에서 '1'의 수를 반환해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const num = 6;

그러면 출력은 다음과 같아야 합니다. -

const output = 3;

출력 설명:

마법 문자열 S의 처음 6개 요소는 "12211"이고 3개의 1을 포함하므로 3을 반환합니다.

예시

이에 대한 코드는 -

const num = 6;
const magicalString = (num = 1) => {
   let ind = 12;
   let str = '1221121221221121122';
   while(str.length < num){
      const end = str.substring(str.length - 1) === '2' ? '1' : '2';
      str = parseInt(str.substring(ind, ind + 1)) === 2 ? str + end + end : str + end;
      ind++;
   };
   return (str.substring(0, num).match(/1/g)||[]).length;
};
console.log(magicalString(num));

출력

콘솔의 출력은 -

3