양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. (1 ≤ T ≤ 10, 1 ≤ n ≤ 106)
각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서 줄 하나에 출력한다. 위치가 낮은 것부터 출력한다.

직접 그림을 그려 이진수를 구해보면 이해가 빠르다.
이진수를 구하는 법은 연속해서 2로 나누어진 나머지를 역순으로 읽는 것이다.
다시 말하면, 맨 위에 위치한(2로 나누기를 반복할 때 가장 먼저 나오는 나머지)나머지 값이 최종 이진수의 최하위 비트이다.
def convertBinary(x): #x를 2진수로 변환하는 함수
binary=[] #이진수가 담길 문자열
idx=0
answer=[]
while(x>=1):
mod=x%2
x=x//2
binary.append(mod)
if(mod==1):
answer.append(idx)
idx+=1
return answer # 1 1 0 1
T=int(input())
for i in range(T):
N=int(input())
answer=(convertBinary(N))
print(*answer)
처음에는 아예 N을 이진수로 변환하고, 역순으로 비트를 읽어오는 걸 하려고 했는데 너무 복잡해서 위에 언급한 꼼수(?)를 적용했다.
list앞에 *를 붙이면 요소만 한 줄로 출력할 수 있다