def solution(num_list):
answer = 0
for i in num_list:
while not i == 1:
if i % 2 == 1:
i = (i - 1) // 2
answer += 1
else:
i //= 2
answer += 1
return answer
개선 1.
def solution(num_list):
answer = 0
for i in num_list:
while not i == 1:
i //= 2
answer += 1
return answer
방법 1.
def solution(num_list):
return sum(len(bin(i)) - 3 for i in num_list)
1
은 연산 과정에서 나누기의 중단 조건입니다.1010
입니다. 이를 나누는 과정을 살펴보면:
1010
(짝수) → 101
(홀수, 빼기 1) → 10
(짝수) → 1
.bin(i)
함수는 정수 i
를 이진수 문자열로 변환합니다."0b"
라는 접두사를 제외한 나머지 비트 수에서 1
의 개수를 빼면, 나누기 연산 횟수를 구할 수 있습니다.def solution(num_list):
return sum(len(bin(i)) - 3 for i in num_list)
bin(i)
:
i
를 이진수 문자열로 변환.bin(10)
→ "0b1010"
, bin(5)
→ "0b101"
.len(bin(i))
:
"0b1010"
의 길이는 6 (0b
포함).