양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
T= int(input())
for _ in range(T):
n = int(input())
bin = []
while n>0:
bin.append(0 if n%2==0 else 1)
n = n//2
for j in range(len(bin)):
if bin[j] == 1 :
print(j,end=' ')
= int(input())
for _ in range(T):
n = int(input())
bin = []
cnt = 0
while n>0:
if n%2==1:
print(cnt,end=' ')
cnt += 1
n = n//2
for _ in range(int(input())):
n = int(input())
b = bin(n)[2:]
for i in range(len(b)):
if b[::-1][i] == '1':
print(i, end=' ')
복기
bin(이진법 함수) 을 안쓰고 풀어봤다.
처음에 이진법으로 변환하고 1을 출력했는데
for 을 한번 더 써야하니 비효율적임