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

그녕·2024년 4월 29일
0

알고리즘 문제 풀이

목록 보기
34/36

문제링크

처음 내 코드

def solution(s):
    cnt=0
    zin = 0
    while s !="10":
        remov=0
        for i in s:
            if i !="0":
                remov+=1 #제거후 길이
            else:
                cnt+=1 #제거한 개수
        s = format(remov,'b')
        zin+=1  
    return [zin+1, cnt+1]

=> 시간초과 뜸

제출 코드

def solution(s):
    cn=0
    zin = 0
    while s !="1":
        remov=0
        cnt = s.count("0")
        remov = s.count("1")
        s = format(remov,'b')
        cn+=cnt
        zin+=1
    return [zin, cn]

for문과 if문을 너무 많이 써서 시간이 오래 걸리는거 같아서 지우고 0과 1의 개수를 직접 세는 방식으로 했다. 그리고 s를 10이 아닌 1로 해서 바꿔주었다.
왜 1로 해줘야지 시간초과가 안뜨는지는 모르겠다...
이러니깐 통과가 되었다.

0개의 댓글