프로그래머스 - 이진 변환 반복하기(레벨2)

응애개발자·2023년 6월 12일
0

파이썬 코테

목록 보기
5/11

처음 작성한 소스코드.
간단하다. 0이 몇갠지 세고 0의 개수만큼 빼고(그 개수만큼 0의 총 갯수에 더해주고) 그걸 2진수로 만들고 몇번 도는지 확인하는 소스코드.

def solution(s):
    answer = []
    howManyZero = 0
    counterTrans = 0

    while True :
        if s == "1" :
            break
        temp = s
        s = s.replace("0", "")
        howManyZero += len(temp) - len(s)
        s = bin(len(s))
        s = str(s)
        s = s.replace("0b", "")
        counterTrans += 1

    answer.append(counterTrans)
    answer.append(howManyZero)

    return answer

두번째 작성한 소스코드.

def solution(s):
	answer = [0,0]
    count = 0
    zeroNum = 0

    while True:
    	if s=="1":
        	answer[0], answer[1] = count, zeroNum
        	return answer
		temp = len(s)
		s = s.replace("0", "")
		zeroNum += temp-len(s)
		s = str(bin(int(len(s))))[2:]
		count+=1
	return answer

바뀐점은 거의 없다.
해봤자 answer에 미리 0,0 넣어서 인덱스로 접근해서 넣는것 정도?
첫번째 소스코드에 "s = ~~" 이런식으로 써있는거 3줄이 1줄로 된거?
그것도 심지어 첫번째때 두번째처럼 하나로 합쳐서 썼다가 뭐가 잘 안되길래 이게 문젠가 싶어서 나눠놨던거라서 딱히 변경된건 없다.

0개의 댓글