본문 바로가기
문제풀이

이진 변환 반복하기

by 이숴 2021. 10. 26.
반응형

[문제 설명]

입력으로 들어온 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번째까지만 저장해서 넘겨주었음.

반응형

'문제풀이' 카테고리의 다른 글

두 수의 차  (0) 2023.02.21
오픈 채팅방  (0) 2021.10.26
1309번 동물원  (0) 2021.08.27
16568번 엔비스카의 영혼  (0) 2021.08.27
2193번 이친수  (0) 2021.08.27

댓글