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

임정민·2023년 5월 22일
1

알고리즘 문제풀이

목록 보기
48/173
post-thumbnail

Python 적응 문제풀이입니다. 손에 익히기 위해 비교적 쉬운 문제들을 풀며 적응하고 있습니다.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/70129

[나의 풀이]

def convert(cnt_zero,s):
    
    cnt_zero_now = 0
    s = list(s)
    
    org_len = len(s)

    for i in range(org_len):

        if s[i] == '0':
            s[i] = ""
            cnt_zero += 1
            cnt_zero_now += 1
    
    return cnt_zero , "{0:b}".format(org_len-cnt_zero_now)

def solution(s):
    
    cnt = 0
    cnt_zero = 0
    check = True
    
    while check:

        bh_s = s
        cnt_zero,s = convert(cnt_zero,s)
        aft_s = s
        
        if bh_s == aft_s :
            check = False
        else:
            cnt += 1
    answer = []
    answer.append(cnt)
    answer.append(cnt_zero)
    
    return answer

문제 정의는 어렵지 않았지만 코드를 간략히 작성하는데 신경쓰다보니 시간이 좀 걸린 문제였습니다.🦌🦌🦌

다른 풀이에서 더욱 간단한 풀이법을 볼 수 있었습니다.

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]

감사합니다.🐄🐄🐄

profile
https://github.com/min731

0개의 댓글