우당탕탕 개발일지

프로그래머스 level 2 이진변환 반복하기 (Python 파이썬) 본문

알고리즘

프로그래머스 level 2 이진변환 반복하기 (Python 파이썬)

민아당긴아 2025. 3. 12. 21:01

💡문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

💡문제 분석 요약

이진 변환

1. 모든 0을 제거

2. 문자열의 길이를 2진법으로 표현 후 문자열로 바꿈

이진 변화를 "1"이 될 때까지 계속 반복

이진 변환 횟수와 변환 과정에서 제거된 0의 개수를 배열에 담아 return하는 문제

 

💡알고리즘 설계

이진 변환 횟수와 변환 과정에서 제거된 0의 개수를 각각 cnt, z = 0, 0으로 초기화한다.

s가 "1"이 아닌동안 이진 변환을 반복한다.이진 변환을 반복하면서 cnt 변수를 1씩 증가시킨다.이진 변환을 반복하면서 0의 개수만큼 z 변수를 증가시킨다.

 

💡코드

def solution(s):
    cnt, z = 0, 0
    while s != "1":
        cnt += 1
        z += s.count("0")
        s = "1" * s.count("1") # 0을 제거
        print(s)
        s = str(bin(len(s))[2:]) # 2진법 변환
    return [cnt, z]

 

💡 오답 풀이

2. 문자열의 길이를 2진법으로 표현 후 문자열로 바꿈

인데

2. 문자열을 2진법으로 표현 후 문자열로 바꿈

로 착각해서 풀었다..