重複バイナリ・フォーマットのコピー-JavaScript


反復プログラマレベル2-バイナリ変換

  • 問題分類:月コードチャレンジ第1四半期
  • 題出所:反復プログラマレベル2-バイナリ変換2
  • 📌 と考える

  • 演算回数count,削除した0の個数をdeletedZerosに格納する.
  • は、この数字0のみを格納するwithZeroと、1のみを格納するwithoutZeroに分けられる.
  • 削除したZerosを
  • withZeroに追加し、withoutZero値を使用して次の演算値を準備します.
  • 個の演算ごとにcountが増加し、1まで演算が繰り返される.
  • 📌 に答える

    function solution(s) {
      let count = 0; // 연산 횟수
      let deletedZeros = 0; // 삭제된 0의 갯수
    
      while (s.length !== 1) {
        // 1이 될때까지 해당 연산을 반복
        s = s.split("").map((item) => +item);
        let withZero = s.filter((number) => number === 0); // 0만 저장
        let withoutZero = s.filter((number) => number === 1); // 1만 저장
    
        deletedZeros += withZero.length; // withZero만큼 deletedZeros를 증가
        s = withoutZero.length.toString(2); // withoutZero 값으로 다음 연산 값을 준비
        count++; // 매 연산마다 count를 증가
      }
    
      return [count, deletedZeros];
    }