본문 바로가기

Algorithm/Implementation

(Javascript) - 프로그래머스(월간코드챌린지) : 이진 변환 반복하기 답

반응형

programmers.co.kr/learn/courses/30/lessons/70129

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

 

풀이방법

1. 문자열에서 '0'을 제거합니다.

2. 제거한 0의 개수를 세고 answer배열을 갱신합니다.

3. 기존 문자열을 남은 1의 길이를 이진법으로 바꾼 문자열로 바꾸고 '1'인지 비교합니다.

4. 갱신된 문자열이 '1'이라면 루프를 탈출해 반환합니다.

 

Code

function removeZero(convertedWord, answer) {
  let tmp = "";
  for (let i = 0; i < convertedWord.length; i++) {
    if (convertedWord[i] !== "0") tmp += convertedWord[i];
    else answer[1] += 1;
  }
  answer[0] += 1;
  return tmp;
}

function solution(s) {
  const answer = [0, 0];
  let convertedWord = s;
  while (1) {
    let word = removeZero(convertedWord, answer);
    convertedWord = word.length.toString(2);
    if (convertedWord === "1") break;
  }
  return answer;
}

console.log(solution("0111010"));