반응형
[문제 설명]
입력으로 들어온 2진수의 0의 갯수를 세고 1로만 이루어진 문자열로 바꿔준 후, 1로 이루어진 문자열의 길이로 다시 2진수로 만들면서 반복되는 문제이다. 결과값으로는 몇회 반복하여 이진 변환을 하였는지, 또 반복하면서 0의 갯수가 몇개였는지 출력하면 해결이다.
[코드]
def solution(s):
answer = []; count = 0; zcount = 0
while s != '1':
count += 1
zcount += s.count('0')
s = bin(s.count('1'))[2:]
answer.append(count); answer.append(zcount)
return answer
[코드 설명]
본인은 먼저 최종 조건인 s가 '1'의 값이 될 때 까지 while문을 돌도록 하였다. 그 다음 횟수마다 count를 두었고, count 함수를 사용해서 0의 갯수를 그때마다 더해줌. 그리고 bin 이진수 변환 함수를 이용해서 1의 갯수를 세어 그 크기만큼 이진수를 변환해주었음. 그러나 bin 함수 특성상 변환된 문자열에는 0b같은 문자열이 추가되어 변환되므로 [2:]로 2번째까지만 저장해서 넘겨주었음.
반응형
댓글