문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/70129
풀이
def solution(s):
_iter = cnt = 0 # _iter: 이진 변환의 횟수, cnt: 제거된 0의 수
while s != "1": # s가 "1"이 될 때까지 반복
number = 0 # s에 존재하는 1의 갯수
for n in s: # s 전체를 한 글자씩 순회하며
if n == "0": # 0이면 제거
cnt += 1 # 제거한 0의 수 업데이트
continue
number += 1 # 1이면 1의 갯수 업데이트
temp = "" # 이진수로 변환한 값을 저장할 문자열
while number > 0: # number를 이진수로 변환
temp += str(number % 2)
number //= 2
s = "".join(reversed(temp))
_iter += 1 # 이진 변환의 횟수 업데이트
return [_iter, cnt]
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스 Lv.2] 모음사전 (Python) (0) | 2024.05.27 |
---|---|
[프로그래머스 Lv.2] 하노이의 탑 (Python) (0) | 2024.05.22 |
[프로그래머스 Lv.2] 문자열 압축 (Python) (0) | 2024.05.17 |
[프로그래머스 Lv.2] 짝지어 제거하기 (Python) (0) | 2024.05.15 |
[프로그래머스 Lv.2] 튜플 (Python) (0) | 2024.05.13 |