나의 풀이
def solution(s):
cycle=0
c=s
zero_cnt=0
while len(c)!=1:
cycle+=1
remove_set=['0']
zero_removed = [i for i in c if i not in remove_set]
zero_cnt+=len(c)-len(zero_removed)
digit=len(zero_removed)
binary=str(bin(digit))
binary=binary[2:]
c=binary
return [cycle, zero_cnt]
다른 사람의 풀이
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]
▶ a는 cycle 즉 반복횟수를 의미한다.
▶ num은 1의 갯수를 의미하며,
▶ b는 0의 갯수를 의미한다.
▶ b=전체갯수 - 1의 갯수
▶ num은 1의 개수이면서 동시에 각각의 1의 더한 합 즉 10진수이기도 하다.
'프로그래머스(파이썬) > LV.2(파이썬)' 카테고리의 다른 글
카펫→ 약수는 제곱근까지만 구하기, 2차원 리스트 요소2개 x,y로 접근★★ (0) | 2022.12.24 |
---|---|
다음 큰 숫자★→count()함수, int('숫자문자열', n)→n진법의 '숫자문자열'을 10진수로 (0) | 2022.12.24 |
올바른 괄호 → 에러를 유도 + refactoring★★ (0) | 2022.12.23 |
최소값 만들기→ "내적"문제와 유사 + 리스트 곱하기 +zip()★★ (0) | 2022.12.23 |
JadenCase 문자열 만들기 → 이상한 문자 만들기★★+교훈: 애당초 소문자로 전부 바꾸기 (0) | 2022.12.23 |