관리 메뉴

솜씨좋은장씨

[Programmers] 이진변환 반복하기 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 이진변환 반복하기 (Python)

솜씨좋은장씨 2021. 2. 27. 16:04
728x90
반응형

코딩 1일 1문제!

오늘의 문제는 프로그래머스의 이진변환 반복하기 입니다.

 

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

 

programmers.co.kr

Solution

def solution(x):
    answer = []
    
    cnt = 0
    zero = 0
    
    while True:
        if x == '1':
            break
        zero = zero + x.count("0")
        x = x.replace("0", "")
        
        x = bin(len(x))[2:]
        
        cnt = cnt + 1
    
    answer = [cnt, zero]
    
    return answer

Solution 풀이

먼저 삭제한 0의 개수를 저장할 zero라는 변수명과 이진변환을 수행한 횟수를 나타낼 cnt 변수 두개를 선언합니다.

while 반복문을 도는데 x가 '1' 이 되면 멈추는 조건을 넣었습니다. ( while x != '1': ) 도 가능

먼저 x에서 x.count('0')를 통해 0의 개수를 구하여 zero에 더해주고

x.replace("0", "")을 통하여 x에서 0을 모두 지워줍니다. 그 다음 x의 길이를 이진수로 변환한 문자열을 다시 x에 넣어줍니다.

x가 '1' 이 되는 순간 다음 이진변환을 계속 실행했던 반복문을 중단하고 answer 리스트에 cnt와 zero를 넣어준 후

return 합니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments