연습장

4. 이진 변환 반복하기 본문

프로그래머스/2단계

4. 이진 변환 반복하기

js0616 2024. 3. 24. 01:02

 

0111010 -> 0 제거 -> 1111 -> 길이(4) 를 2진법으로 표현 -> 100 -> 0 제거 -> 1 -> 종료 

 

[반복횟수, 제거된 0의 갯수] 를 반환

==  [2, 5] 

 


문자열 s 에 대해서

 

before_len : 처음 문자의 길이 

replace : 0 제거 

after_len: 0이 제거된 후 문자의 길이

 

제거된 0의 갯수 : before_len - after_len 

 

s = after_len 을 2진법으로 바꾼 숫자의 문자형

 

다시 반복. 

 

2진법으로 바꾸는 방법 

bin , format 중에 format 을 사용함. 

value = 60

print(bin(value), type(bin(value))) # 0b111100 <class 'str'>
print(format(value, 'b'), type(format(value, 'b'))) # 111100 <class 'str'>

 


 

def solution(s):
    answer = [0,0]
   
#   반복
    while True :
        answer[0] += 1
        before_len  = len(s)
        s = s.replace('0','')
        after_len = len(s)
        answer[1] += before_len - after_len
        s = format(after_len, "b")
        if s == '1':
            break
   
    return answer

'프로그래머스 > 2단계' 카테고리의 다른 글

다음 큰 숫자  (0) 2024.04.30
숫자의 표현  (0) 2024.04.30
3. 올바른 괄호  (1) 2024.03.05
2. 최솟값 만들기  (1) 2024.03.05
1. SQL 문제  (1) 2024.01.23