level2_이진 변환 반복하기

2024. 2. 22. 15:10파이썬_알고리즘(코딩테스트)/level2

 

 

 

내가 제출한 코드

def solution(s):
    # 이진 변환 횟수와 제거된 0의 총 개수를 저장
    answer = []
    # 이진 변환 횟수를 세는 변수
    count_bin = 0
    # 제거된 0의 개수를 세는 변수
    count_zero = 0
    
    # 입력된 문자열 s가 1이 아닐때까지 루프 실행
    while s != '1':
        # 모든 0을 제거
        
        count_zero += s.count("0")
        s = s.replace("0", "")
        
        len_value = len(s)
        
        # bin함수
        # bin(3)은 "0b11"반환하기 때문에 [2:]설정
        s = bin(len_value)[2:]
        count_bin += 1
        
    answer.append(count_bin)
    answer.append(count_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]

 

 

내장함수 정리

bin() 
- 전달받은 정수 자료형을 2진로 돌려준다.
- 자동으로 자리를 맞춰주거나 연산을 해준다.
ex) bin(3) ->  "0b11"로 반환


oct()
- 8진수
ex) oct(10) -> "0o12"로 반환

hex()
- 16진수
ex) hex(10) -> "0xa"로 반환

eval()
- 문자열로 된 수식을 자동으로 계산해준다.
- 어떤분 블로그 참고하니깐.. 실제로는 위험한 함수라고 실전에서 잘 사용하지 않는다고 한다.

 

내장함수 찾아보다가 유용한 함수가 있어서 같이 정리했다. 

'파이썬_알고리즘(코딩테스트) > level2' 카테고리의 다른 글

level2_다음 큰 숫자  (0) 2024.02.27
level2_숫자의 표현  (0) 2024.02.25
level2_올바른 괄호(스택/큐)  (0) 2024.02.21
level2_최솟값 만들기  (1) 2024.02.19
level2_최댓값과 최솟값  (0) 2024.02.05