프로그래머스 LV2 - 이진 변환 반복하기
내 풀이
def solution(s):
zero_count = 0
times = 0
while s != '1':
zero_count += s.count('0')
s = '1'* s.count('1')
s = len(s)
s = bin(s)[2:]
times += 1
return [times, zero_count]
다른 풀이
def solution(s):
zero_count = 0 # 제거된 0의 개수를 저장할 변수
change_count = 0 # 이진 변환의 횟수를 저장할 변수
# s가 "1"이 될 때까지 반복
while s != "1":
# s에서 0의 개수를 세어 zero_count에 더하기
zero_count += s.count("0")
# s에서 1의 개수를 세고, 그 수를 2진법으로 변환한 후, 앞의 '0b'를 제거 후 s에 대입
s = bin(s.count("1"))[2:]
change_count += 1 # 이진 변환의 횟수를 증가
# 이진 변환의 횟수와 제거된 0의 개수를 리스트로 반환
return [change_count, zero_count]
출처: https://1ets-just-do-it.tistory.com/123 [파이썬은 신이야🔥🔥🔥:티스토리]
풀이 해석
- 0과 1을 카운트하는 방식을 이용
- 이진 변환 함수 bin을 사용
- while 문을 이용
배울 점
- 내 풀이와 매우 흡사함
댓글남기기