본문 바로가기
  • 살짝 구운 김 유나
Algorithm/Programmers

[Lv.2] 이진변환 반복하기 -JavaScript

by yunae 2023. 3. 12.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/70129

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

function solution(str) {
  let round = 0; // 회차
  let zeroCnt = 0; // 제거한 0의 개수

  // s가 '1'이 될 때까지 반복
  while (str !== "1") {
    round++; // 회차 + 1

    let oneCnt = 0; // 0을 제거한뒤 남아있는 1의 갯수 == 남은 문자열의 길이
    for (let s of str) {
      if (s === "0") zeroCnt++;
      else oneCnt++;
    }

    // 이진수로 변환하기
    let newStr = "";
    while (oneCnt > 0) {
      newStr += String(oneCnt % 2); // 이진수 만들기
      oneCnt = Math.floor(oneCnt / 2); // 몫을 oneCnt에 저장
    }
    str = newStr; // 이진수로 변환한 문자열을 다시 str에 저장
  }

  return [round, zeroCnt];
}

 

 

 

'Algorithm > Programmers' 카테고리의 다른 글

[Lv.2] 프린터 - JavaScript  (0) 2023.03.21
[Lv.2] 피로도 - JavaScript  (0) 2023.03.18
[Lv.3] 여행 경로 - JavaScript  (0) 2023.03.11
[Lv.3] 징검다리 건너기 - JavaScript  (0) 2023.03.07
[Lv.3] 기지국 설치 - JavaScript  (0) 2023.03.06

댓글