[BOJ] 3460 이진수
이 문제는 어렵지 않게 풀이했다. bin()
함수를 이용하면 이진수로 변환할 수 있다는 것을 알고 있었고, 이를 통해서 이진수 변환을 진행했고, 0b가 따로 표시되어 list에 집어넣으면서 del
로 제거해주었다. 멀티 제거가 될텐데… 구글링 없이 푸는 것이 목표이기에 아는데로 우선 풀이했다.
테스트케이스와 결과가 다르게 나오자 의아했는데, 알고보니 이진수를 셀 때 오른쪽부터 세는 것처럼 index도 오른쪽 기준으로 헤아려야 했다. 그래서 reverse()
함수를 떠올렸고, 이는 리스트에만 적용가능하다. list를 뒤집어주고 인덱스를 우측에서 헤아리는 것처럼 구현하였다.
나의 풀이
T = int(input())
for _ in range(T):
N = int(input())
array = []
for i in bin(N):
array.append(i)
del array[0]
del array[0]
array.reverse()
for i in range(len(array)):
if array[i] == '1':
if(i == len(array)-1):
print(i)
else:
print(i, end=" ")