코딩테스트 연습 - 이진 변환 반복하기 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
풀이)
문자열 num을 탐색하면서 '0'이면 zeroNum을 증가시키고, '1'이면 deleteZero에 추가한다.
deleteZero의 길이를 뽑아낸 뒤 이진수로 변환시킨다(문자열로 반환됨).
변환된 문자열이 1이 될 때까지 위의 과정을 반복한다.(반복횟수와 zeroNum을 저장하고 반환한다.)
def solution(s):
answer = []
zeroNum = 0 # 제거된 0의 개수
count = 0 # 변환 과정의 횟수
newNum = s
while True:
count += 1 # N회차
deleteZero = '' # 0제거 후
for i in newNum:
if i == '0':
zeroNum += 1
else:
deleteZero = deleteZero + '1'
deleteZeroLen = len(deleteZero)
newNum = format(bin(deleteZeroLen)[2:]) # 이진변환
if(newNum == '1'):
break
answer.append(count)
answer.append(zeroNum)
return answer