https://school.programmers.co.kr/learn/courses/30/lessons/70129?language=python3
코테가 이런거구나
레벨2 문제도 엄청 어렵네
#나의 풀이 def solution(s): llist=[] countzero=[] def Fsolution(s): llist.append(1) ll=[] for i in s: if int(i) != 0: ll.append(i) else: countzero.append(1) lllen = len(ll) # 6 num = lllen save = [] while True: a = int(num / 2) b = int(num % 2) save.insert(0, b) if a != 0: num = a else: break final = ''.join(map(str, save)) #이진수 100 #print(final) if int(final) != 1 : Fsolution(str(final)) else: pass Fsolution(s) #함수실행 return len(llist), len(countzero)
구글링으로 이진수 변환 코드를 딴 후 재귀용법을 활용했다.
다른 사람 정답 보니까 아주 간단하게 풀었더라.
def solution(s):
a, b = 0, 0
while s != '1':
a += 1
num = s.count('1')
b += len(s) - num
s = bin(num)[2:]
return [a, b]
while : s가 1이 아니면 무한루프
루프 한 번 돌때마다 a에 +1 리턴a를 손쉽게 카운트
렌s에서 넘을 빼서 0 개수를 카운트해서 b에 누적
bin(num) 은 0b로 시작하기 때문에 2인덱부터 슬라이스