본문 바로가기
개발/알고리즘

[프로그래머스] 이진 변환 반복하기

by ny0011 2021. 2. 15.
반응형

programmers.co.kr/learn/courses/30/lessons/70129

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

친절하게 이진 변환 방식을 다 알려줘서 그걸 코드로 바꾸면 된다

1) 문자열에 0의 개수를 세고 0을 제거하고 새로운 문자열을 만든다

2) tmp = 새로운 문자열의 길이 로 지정해서 tmp를 다시 이진수로 만든다

요걸 반복해서 1만 남을 때까지 돌린다

 

위 방식을 코드로 나타내면 다음과 같다

def solution(s):
    answer = []    
    cnt = 0
    zero_ = 0
    while s != "1":
        str_ = ''
        for i in s:
            if i == '0':
                zero_ +=1
            else:
                str_ += i
        tmp = int(len(str_))
        str_ = ''
        while tmp != 0:
            str_ = "01"[tmp%2]+ str_
            tmp = tmp//2
        s = str_
        cnt += 1
    answer.append(cnt)
    answer.append(zero_)

    return answer

 

다른 사람의 풀이를 봤는데...

와 파이썬이면 str.count 써야지.... 그래....

bin()은 이진수로 바꿔주는 내장함수... 크으으 파이썬 내장함수 짱짱...

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]

 

'개발 > 알고리즘' 카테고리의 다른 글

[codility] CyclicRotation  (0) 2021.02.16
[codility] BinaryGap  (0) 2021.02.16
[프로그래머스] 행렬의 곱셈  (0) 2021.02.15
[프로그래머스] 카펫  (0) 2021.02.15
[프로그래머스] 124 나라의 숫자  (0) 2021.02.15

댓글