본문 바로가기
코딩공부/프로그래머스 (python)

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

by CodingKwon 2022. 9. 13.

문제 링크 (Level 2)

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

 

프로그래머스

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

programmers.co.kr

 

나의 코드 (Python)

def solution(s):
    answer = []
    rem = 0     # 제거한 0의 개수
    cnt = 0     # 회차
    while True:
        tmp = 0
        cnt += 1    # 회차
        
        # 변환
        for i in s:
            if i == '0':
                rem += 1
            else:
                tmp += 1
                
        # 종료조건 : 제거후 길이가 1일때
        if tmp == 1:
            answer.append(cnt)
            answer.append(rem)
            return answer
        
        # 제거 후 길이를 이진변환
        st = ""
        while tmp:
            a = tmp % 2
            tmp //= 2
            st = str(a) + st
        s = st

 

1. 0의 수를 카운팅하고 1이 몇 개인지 센다 (rem, tmp)

2. 1을 카운팅 한 변수(tmp)가 1이라면 이는 종료 조건이다

3. 종료조건에 걸리지 않았다면 길이를 다시 이진 변환하고 1번부터 반복한다

 

댓글