알고리즘 공부 ⌨/프로그래머스

[프로그래머스 Level 2] 이진 변환 반복하기 Python3 / JavaScript

고짬이 2021. 8. 6. 23:15

문제 주소 및 출처 ❕

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

 

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

 

programmers.co.kr

 

 

문제 : Level 2 이진 변환 반복하기

 

언어 : Python3 / JavaScript

 

 

💬 나의 코드

📌 Python3

# 10진수 => 2진수
def two(x):
    if x < 2:
        return x
    else:
        return x % 2 + two(x//2)*10

def solution(s):
    zero = cnt = 0
    while s != "1":
        # 반복 횟수
        cnt += 1
        # 0 개수
        zero += s.count("0")
        # 1의 개수를 이진수로 변경
        s = str(two(s.count("1")))
    answer = [cnt, zero]
    return answer

 

📌 JavaScript

function solution(s) {
  var zero = 0
  var cnt = 0
  while (s !== "1") {
    cnt += 1
    var cnt_zero = 0
    var cnt_one = 0
    for (let x of s) {
      if (x === "1") {
        cnt_one += 1
      } else {
        cnt_zero += 1
      }
    }
    zero += cnt_zero
    s = cnt_one.toString(2)
  }
  var answer = [cnt, zero]
  return answer
}