본문 바로가기

학습 노트/알고리즘 (Python)

99클럽 - 이진 변환 반복하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

아이디어

프로젝트들을 진행하면서 생긴 변화는 '내장함수'의 활용이다.
직접 구현하는 것보다 덜 수고스럽고, 실제 구동 속도도 빠르다는 것이 장점이다. (아는 것이 힘이라는 거지...)
2진수와 10진수 간의 변환에는 다음의 내장 함수를 사용하면 간단하다.

bin()

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

int()

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

위 둘을 가장 많이 사용하고, 예외로 알아두면 좋은 함수는 다음과 같다.

hex()

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

oct()

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

각각 16진수, 8진수로 변환하는 함수다.
주의할 점은 이들을 구분하기 위해 접미어가 붙는다는 점인데, 슬라이싱으로 가볍게 편집해 주면 된다.

풀이

def solution(s):
    zero_cnt = 0
    progress_cnt = 0
    
    while s != '1':
        temp = ''
        for i in s:
            if i == '0':
                zero_cnt += 1
            else:
                temp += i
                
        s = bin(len(temp))[2:]
        progress_cnt += 1

    return [progress_cnt, zero_cnt]

개인적으로 while은 디버깅이 곤란한 경우가 많아 기피하는데, 지금처럼 상태가 명확하다면 그런 위험도 없다.

'학습 노트 > 알고리즘 (Python)' 카테고리의 다른 글

99클럽 - 모음사전  (0) 2024.04.13
99클럽 - 기능개발, 대충 만든 자판  (0) 2024.04.12
Stack #2  (0) 2022.06.23
Stack #1  (0) 2022.06.04
선형 데이터 구조와 탐색  (0) 2022.05.03